1. 程式人生 > >文件驅動式程式碼設計器——程式碼是設計出來的!

文件驅動式程式碼設計器——程式碼是設計出來的!

  程式碼是敲出來的嗎?是批量生成出來的嗎?

  No no no,程式碼是設計出來的!

  如果說到程式碼生成器,大家可能會想到三層、動軟程式碼生成器、資料庫表等等。其一般的思路是,先有資料庫然後根據庫裡的表自動生成一系列的程式碼,包括實體類、持久化、業務層(空函式)、頁面程式碼等,還可以生成資料庫文件。這個確實很好很強大,可以免除程式設計師的機械式的敲程式碼的工作。

(“主要實現在對應資料庫中表的基類程式碼的自動生成,包括生成屬性、新增、修改、刪除、查詢、存在性、Model類構造等基礎程式碼片斷,支援不同3種架構程式碼生成,使程式設計師可以節省大量機械錄入的時間和重複勞動,而將精力集中於核心業務邏輯的開發。”

——摘自動軟官網的介紹  )

  但是我們都知道,表的設計是根據客戶的需求、業務邏輯、設計人員的專案經驗設計的,其中最主要的是要受到關係型資料庫自身的特點(所以nosql嘛)。表並不能完整體現業務需求,否則教會客戶使用企業管理器(資料庫的客戶端軟體)就可以了。直接把表交給客戶用,那是不行的,否則程式設計師就集體失業了。

  總結一下,一般程式碼生成器的思路是:資料庫表——程式碼——文件。

  而我這裡說的思路是完全相反的:文件——程式碼——資料庫——業務邏輯

  一般我們做專案的順序是:調研,設計,編碼,測試,上線。其中設計階段要編寫大量的文件,比如功能說明,各種流程圖,領域設計,資料庫設計,原型圖等等。還要編制任務計劃,團隊分工合作。然後開始編碼。編碼的時候會發現,上一階段的各種文件只能看,對於要編寫的程式碼完全沒有直接作用,必須要程式設計師進行“翻譯”。把文件翻譯成程式碼——於是乎苦逼的碼農誕生了!

  而實際情況是,專案緊任務重時間還短。怎麼辦呢?文件可以沒有或者後補,但是程式碼是不能沒有的,所以往往文件就被忽略甚至完全被幹掉了——這是文件和程式碼的矛盾點。

  怎麼辦呢?犧牲文件?下面要介紹一把雙刃劍:可以讓文件成為程式碼的助力!可以把碼農從簡單、機械、重複中解脫出來,但是同時也意味著不會再有“碼農”這個崗位!

  還要從剛進入的這家公司說起。公司主營各種企業管理的專案,採用ABP架構最為底層,然後又進一步封裝。

   簡單的說,用EF的code frist做實體類,然後生成資料庫,再根據業務需求設計Dto,有很多很多的Dto。頁面用angularjs做總控和表單,kendoui做列表。儲存部分至少定義一個介面,webapi部分也要定義一個介面。總之面向介面程式設計嘛。還有很多很多,逐步瞭解中。

  對於新人來說,最大的問題就是——這都哪跟哪呀。有了code frist,也就沒有了資料庫文件。有一大堆dto,但是這些dto都是啥功能?點開挨個看吧。

  看了兩週還是蒙登。如果有一系列的文件說明該多好?但是大家都知道,任務緊工期短,哪有時間弄文件?

   好了又繞回來了,如果我們設計的文件可以自動生成程式碼,是不是一切就都迎刃而解了呢?

  資料庫角度:先設計資料庫文件,然後自動生成ef的code first 的實體類,然後用ef的資料庫遷移功能建立表。然後生成預設的介面定義。這個沒啥難度吧。

  業務角度:設計功能模組、頁面,頁面裡面的資料列表、查詢、分頁、刪除、表單等,然後根據這些設計生成對應的Dto,以及相關的介面,還有頁面需要的程式碼。這樣程式碼和文件就都有了。

  怎麼樣,一份設計實現兩種功能(文件和程式碼)。這時候基本功能就都出來了。然後在生成的程式碼基礎上做一些調整和優化,主要是頁面方面。

  最後每個專案總會有些特殊的需求,我們就可以集中精力幹掉它們了,

  對了,還可以生成測試用例,還有測試人員使用的測試平臺也可以結合起來。

  現在您相信了吧:程式碼是設計出來的!

相關推薦

驅動程式碼設計——程式碼設計出來

  程式碼是敲出來的嗎?是批量生成出來的嗎?   No no no,程式碼是設計出來的!   如果說到程式碼生成器,大家可能會想到三層、動軟程式碼生成器、資料庫表等等。其一般的思路是,先有資料庫然後根據庫裡的表自動生成一系列的程式碼,包括實體類、持久化、業務層(空函式)、頁面程式碼等,還可以生

Android Studio官方之使用佈局編輯設計UI介面

ConstraintLayout基本介面 在今天的文章開始之前,有個忙想請大家幫一下,希望在京東、淘寶、噹噹、亞馬遜購買了我的書《Android群英傳:神兵利器》的朋友們,幫忙去網店上給個簡短的評價,舉手之勞,還是多謝大家啦~~ 更新Android Studio 2.2之後,更新了佈局設計器,同

驅動超敏捷開發

  敏捷開發大家都不陌生,他對文件的態度是偏向於反對,但是也不是說一點文件都沒有。他的說法是 代替文件。   那麼敏捷開發為什麼會這麼認為呢?其實大家在做專案開發的時候都會有這樣的體會:   時間緊任務重,哪有時間寫文件呀?程式碼都寫不過來。   辛辛苦苦把文件寫好了,但是但是專案才

驅動面向服務的敏捷開發與高效執行

  標題有點長,因為想把主要特點都加進去,結果還是漏掉了角色和工作流。   可能您看著有點暈,感覺這個有點扯。Emmmm,看個圖吧。         一條大魚,骨骼已經出來了,就差往裡面填肉了,有興趣嗎?   除了外掛功能之外,不需要寫程式碼!  

驅動 —— 表單元(五):基於Ant Design Vue 的表單控制元件的demo,再也不需要寫程式碼了。

# 原始碼 [https://github.com/naturefwvue/nf-vue3-ant](https://github.com/naturefwvue/nf-vue3-ant) # 特點 * 只需要更改meta,既可以切換表單 * 可以統一修改樣式,統一升級,以最小的代價,應對UI的升級、切換

驅動 —— 表單元(六):基於AntDV的Form表單的封裝,目標還是不寫程式碼

# 開原始碼 [https://github.com/naturefwvue/nf-vue3-ant](https://github.com/naturefwvue/nf-vue3-ant) > 也不知道大家是怎麼寫程式碼的,這裡全當拋磚引玉 # 為何封裝? > AntDV非常強大,效果也非常漂亮,功能強

中的類都不能進行設計,因此未能為該顯示設計設計檢查出中有以下類: FormMain --- 未能加載基類

color 理解 重新編譯 如果 窗口 images ges -i 引用 出現該問題的原因:FormMain從FormMainBase繼承之後,一旦修改FormMainBase就會出現這個問題 解決方案:(1-4是搜索網友的) 1: 關閉VS所有窗口,後重啟.即可返

分布搭建-簡易版上傳下載服務FastDFS

centos 提取 新的 一份 xms x64 子目錄 archive 加權 一、FastDFS介紹 FastDFS開源地址:https://github.com/happyfish100 參考:分布式文件系統FastDFS設計原理 參考:FastDFS分布式文件系統 個

python:簡單爬蟲示例,含分析,建庫,程式程式碼

環境:ubantu18.04,mysql5.7,python3.6 1.分析文件 1.1 目標 爬取笑話集-最新兒童笑話大全前三頁的笑話題目,訪問量,發表時間 1.2 URL 第一頁:www.jokeji.cn/list7_1.htm 第三頁:www.jokej

根據xml編寫dtd檔案並用java程式碼測試

xml檔案:<應聘資訊> <應聘者> <姓名> 張三 </姓名> <碩士> 湖南大學計算機理學碩士 </碩士> <獎勵> 獲得計算機競賽

如何真正實現由驅動的API設計

前言 本文主要介紹了一種新的開發思路:通過反轉開發順序,直接從API文件中閱讀程式碼。作者認為通過這種開發方式,你可以更清楚地知道文件表達出什麼以及它應該如何實現。 如果單從API文件出發,由於資訊量不足,通常很難了解它具體想實現的功能,正因為有這種假設的存在,使得經常在開發之後才會想起對文件進行完善

PHP遞歸復制夾以及傳輸夾到其他服務

mkdir 返回 opendir read php 關於 rar 新項目 directory 項目中需要復制整個文件夾,有時候還需要將整個文件夾傳輸到遠程服務器。 這裏就要遞歸遍歷整個文件夾了,想看遞歸遍歷文件夾的代碼。 function deepScanDir($d

客戶端的上傳到服務,服務返回的路徑

ech echo return post error arr var urn top 客戶端的文件上傳到服務器,服務器返回文件的路徑 返回信息,客戶端將文件保存 客戶端: <?php header(‘content-type:text/html;charset=

linux批量復制到多臺服務腳本

shell腳本=======================xsync.sh======================================#!/bin/bashif [[ $# -lt 1 ]] ; then echo no params ; exit ; fip=$1#echo p=$pdir

git 上傳到遠程服務

nbsp 初始化 ima 代碼 -1 lean 總結 查看 遠程服務 當你想要上傳文件到git服務器上,需要做一下流程: 一開始走的流程是:1、本地初始化一個git庫2、關聯遠程庫 1.本地初始化一個git庫 在你要上傳的文件夾中打開命令窗口:git init;然後他會自動

PDF轉CAD圖紙轉換

怎麽將PDF文件轉換為CAD圖紙?需要什麽軟件?有那款好用的PDF文件轉CAD圖紙轉換器軟件?怎麽操作使用呢?有沒有什麽簡單的方法?小編相信這是很多人想問的,也想知道的,下面小編就為大家揭開這些問題。 小編為大家介紹的是迅捷PDF轉CAD轉換器,這款軟件可以為大家揭開這些問題,迅捷PDF轉DWG轉換器是

PDF轉換DWG格式轉換

PDF文件用處很多,也得到了廣泛的應用,不可二次編輯即是PDF文件的優點也是PDF文件的缺點,優點是避免PDF文件在傳看中更改或者抄襲,缺點不可二次編輯,原有的PDF文件想要更改卻改不小,那我們怎麽去改變PDF文件這一缺點呢? PDF文件不可編輯,我們需要將PDF文件轉換DWG文件格式,那麽怎麽轉換呢?

Mac/Linux/Centos終端中上傳到Linux雲服務

gin log itl not root用戶 終端 ssh端口 路徑和 輸入 Mac/Linux/Centos終端中上傳文件到Linux雲服務器 1、mac上傳文件到Linux服務器 scp 文件名 [email protected]/*

上傳與攔截

quest 配置文件 mon index.jsp except for can ring servle @Controller public class MostFileController { //多文件上傳 @RequestMa

關於本地服務目錄成功與服務目錄不成功的問題。

names etc real image 圖片 windows系統 目錄 span 本地 //將獲取的base64字符串 轉換成字節數組 Base64 encoder = new Base64(); byte[] decod