文件驅動式程式碼設計器——程式碼是設計出來的!
程式碼是敲出來的嗎?是批量生成出來的嗎?
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