1. 程式人生 > >【轉】從開發框架提高開發效率說起

【轉】從開發框架提高開發效率說起

在我們接觸的很多專案中,如果有一些參考性的專案框架,那麼做起開發來,事半功倍,一般來說搭建或者積累這些框架性的專案,非一日之功。一般我們可以把具體的專案分為Winfrom、Web、微信、或者Socket等方面,具體專案介面表現不同,但是介面層底下的應該都是差不多的結構,能夠支援多種資料庫的接入,提供更好的介面封裝,以便重用,實現最優化程式碼的處理。

軟體系統隨著業務的發展,變得越來越複雜,不同領域的業務所涉及到的知識、內容、問題非常非常多。如果每次都從頭開發,那都是一個很漫長的事情,且並不一定能將它做好。基於穩定成熟的框架,開發專案,技術和時間都有保障,同時可以利用前人高效的工具進行輔助開發,從而事半功倍。

1、框架的主要特點和要求

從一些資料來解讀下開發框架的特點,如下所示:程式碼模板化、重用、高內聚(封裝)、規範、可擴充套件、可維護、協作開發、通用性。

    1、程式碼模板化

  框架一般都有統一的程式碼風格,同一分層的不同類程式碼,都是大同小異的模板化結構,方便使用模板工具統一生成,減少大量重複程式碼的編寫。在學習時通常只要理解某一層有代表性的一個類,就等於瞭解了同一層的其他大部分類結構和功能,容易上手。團隊中不同的人員採用類同的呼叫風格進行編碼,很大程度提高了程式碼的可讀性,方便維護與管理。

  2、重用

  開發框架一般層次清晰,不同開發人員開發時都會根據具體功能放到相同的位置,加上配合相應的開發文件,程式碼重用會非常高,想要呼叫什麼功能直接進對應的位置去查詢相關函式,而不是每個開發人員各自編寫一套相同的方法。

  3、高內聚(封裝)

  框架中的功能會實現高內聚,開發人員將各種需要的功能封裝在不同的層中,給大家呼叫,而大家在呼叫時不需要清楚這些方法裡面是如果實現的,只需要關注輸出的結果是否是自己想要的就可以了。

  4、規範

  框架開發時,必須根據嚴格執行程式碼開發規範要求,做好命名、註釋、架構分層、編碼、文件編寫等規範要求。因為你開發出來的框架並不一定只有你自己在用,要讓別人更加容易理解與掌握,這些內容是非常重要的。

  5、可擴充套件

   開發框架時必須要考慮可擴充套件性,當業務邏輯更加複雜、數量記錄量爆增、併發量增大時,能否通過一些小的調整就能適應?還是需要將整個框架推倒重新開發?當然對於中小型專案框架,也不必考慮太多這些內容,當個人能力和經驗足夠時水到渠成,自然就會注意到很多開發細節。

  7、可維護

  成熟的框架,對於二次開發或現有功能的維護來說,操作上應該都是非常方便的。比如專案要新增、修改或刪除一個欄位或相關功能,只需要簡單的操作,十來分鐘或不用花太多的工夫就可以搞定。新增一個數據表和對應的功能,也可以快速的完成。功能的變動修改,不會對系統產生不利的影響。程式碼不存在硬編碼等等,保證軟體開發的生產效率和質量。

  8、協作開發

  有了開發框架,我們才能組織大大小小的團隊更好的進行協作開發,成熟的框架將大大減輕專案開發的難度,加快開發速度,降低開發費用,減輕維護難度。

  9、通用性

  同一行業或領域的框架,功能都是大同小異的,不用做太大的改動就可以應用到類似的專案中。在框架中,我們一般都會實現一些同質化的基礎功能,比如許可權管理、角色管理、選單管理、日誌管理、異常處理......或該行業中所要使用到的通用功能,使框架能應用到某一行業或領域中,而不是隻針對某公司某業務而設定(當然也肯定存在那些特定功能的應用框架,這只是非常少的特殊情況,不在我們的考慮範圍)。

2、基於Winform混合式開發框架和Bootstrap開發框架的基礎分析

在很多場合,一般如果是做Winform桌面的應用,我會推薦客戶使用《Winform混合式開發框架》,如果是基於Web的專案開發,一般推薦客戶採用《Bootstrap開發框架》。

1) 《混合式開發框架》混合了傳統《Winform開發框架》、《WCF開發框架》和Web API介面框架的特點,可以在直接訪問資料庫、利用WCF服務獲取資料、利用Web API服務獲取資料三者之間自由切換,統一了系統介面層對業務服務的呼叫模式,所有元件模組均實現三種方式的呼叫,是一種彈性化非常好的框架應用,既可用於單機版軟體或者基於區域網內的應用軟體,也可以用於分散式技術的網際網路環境應用,是一種成熟穩定、安全高效的技術框架。

由於混合型框架,既可以用於傳統Winform系統開發,也可以用於WCF分散式系統開發,還可以用於輕型高效的Web API的分散式系統開發(目前廣泛應用的介面方式),因此環境適應性強;而且由於模組具有這些特點,可重用性更高,特別對於通用性的模組,更是具有無可替代的優越性。

2) 基於Metronic的Bootstrap開發框架

該開發框架介面部分採用較新的Bootstrap技術,採用當前最新的Bootstrap3.x,集成了眾多功能強大的Bootstrap外掛。

Bootstrap是一個前端的技術框架,很多平臺都可以採用,JAVA/PHP/.NET都可以用來做前端介面,整合JQuery可以實現非常豐富的介面效果,目前也有很多Bootstrap的外掛能夠提供給大家使用,本框架集合了眾多最為優秀的外掛,能給我們Web的使用者體驗提升到一個前所未有的水平。

Metronic是一個國外的基於HTML、JS等技術的Bootstrap開發框架整合,整合了很多Bootstrap的前端技術和外掛的使用,是一個非常不錯的技術框架。本框架以這個為基礎,結合我對MVC的Web框架的研究,整合了基於MVC的Bootstrap開發框架,使之能夠符合實際專案的結構需要。

框架後臺採用基於C#的MVC技術,是目前.NET開發最為成熟流行的技術,框架後臺資料庫支援Oracle、SqlServer、MySql、Sqlite、Access等常規資料庫,可通過配置進行自由切換,使用Enterprise Library模組進行資料訪問的控制,使得資料訪問更方便輕鬆。

3、框架的各個特點的說明

上面介紹了開發框架的一些共性,概括總結幾點:程式碼模板化、重用、高內聚(封裝)、規範、可擴充套件、可維護、協作開發、通用性。

1)程式碼模板化

我們的框架系列,無論是Winform開發框架,Web開發框架、Bootstrap開發框架等框架系列,都是一脈相承的特點,所有類程式碼都統一的程式碼風格,各個專案以及分層目錄都是按照統一的命名方式進行構建,易讀易理解,整個框架的程式碼,包括專案底層BLL、DAL、Entity等層的程式碼,以及Winform介面層、或者Web介面層,都可以利用工具統一生成(我們根據專案介面特點構建對應的模板檔案),減少大量重複程式碼的編寫。

這些結構利於使用程式碼生成工具(Database2Sharp,我們為框架快速開發量身定做的軟體工具)進行專案程式碼的生成

2) 重用

由於我們在專案開發中,採用了一些模組化的方式來組裝專案,可以簡單的理解為積木組合的方式。如許可權管理模組、字典管理模組、自動更新模組、人員管理模組、通訊錄管理模組、分頁控制元件、公用類庫等方面,這些可以在專案中根據情況採用對應的模組,非常高效,整個主體框架也有對應接入這些模組的案例程式碼供參考,因此可以更加直觀明瞭。

而另一方面,我們在對類的重用方面,也是精益求精,儘量做到精簡重複程式碼,提高開發效率的目的。

介面類提供封裝繼承,減少介面的一些繁瑣設定

基礎業務類,我們同樣也是採用重用基類方式,實現介面函式的封裝處理。

以及業務類繼承關係,當然還有其他更多的,基本上都提供一些基類來處理,簡化程式碼。

 

3) 高內聚(封裝)

從上面小節可以看出,整個框架巨集觀方面分為多個功能模組,可以自由搭配使用;微觀方面都有一個繼承關係的基類來對相關的程式碼進行封裝處理,這樣開發人員將各種需要的功能封裝在不同的模組或者基類裡面,從而實現高內聚的處理。

 

Web API的控制器設計物件繼承關係,如下所示:

4) 規範

 我們的整個框架系列,嚴格執行程式碼開發規範要求,做好命名、註釋、架構分層、編碼、文件編寫等規範要求,這樣我們只需要瞭解一個專案的結構,其他專案依次類推,就可以明確各個分層的意義,一葉知秋,管中窺豹就是這個道理,我們可以通過這些知識積累,指導我們其他同事進行專案開發,大家在規範上統一一致就可以步調統一,從而在單位內部擁有更高的開發效率。

其他框架的特點,如可擴充套件、可維護、協作開發、通用性,也就不再贅述,基本上,整個框架就是為了方便構建專案而搭建,大的方面可以使用開發好的模組,小的方面可以繼承封裝好的類庫,整個呼叫的邏輯過程也是經過實踐的考驗,在眾多國內外公司的專案中使用過,同時也獲得非常多的反饋,共同促進整個框架體系的發展。

相關推薦

開發框架提高開發效率

在我們接觸的很多專案中,如果有一些參考性的專案框架,那麼做起開發來,事半功倍,一般來說搭建或者積累這些框架性的專案,非一日之功。一般我們可以把具體的專案分為Winfrom、Web、微信、或者Socket等方面,具體專案介面表現不同,但是介面層底下的應該都是差不多的結構,能夠支援多種資料庫的接入,提供更好的介面

: 《江湖X》開發筆談 - 熱更新框架

列表 ane lua 會有 數據文件 由於 嚴格 http服務 tex 前言 大家好,我們這期繼續借著我們工作室正在運營的在線遊戲《江湖X》來談一下熱更新機制以及我們的理解和解決方案。這裏先簡單的介紹一下熱更新的概念,熟悉這部分的朋友可以跳過,直接看我們的方案。 熱更新

如何為Apache JMeter開發插件(一)

選擇 ref 測試結果 沒有 通過 pri for entry state 本文轉載於http://blog.csdn.net/column/details/12925.html,作者:xreztento 作者寫的很精華,我打算在此系列操作一遍後,加多點截圖,便於更多人更快

自動化測試框架: pytest&allure ,提高自動化健壯性和穩定性

序 在之前,我寫過一個系列“從零開始搭建一個簡單的ui自動化測試框架(pytest+selenium+allure)”,在這個系列裡,主要介紹瞭如何從零開始去搭建一個可用的自動化工程框架,但是還缺乏了一些細節的補充,例如對於自動化測試而言,如何提高其測試的穩定性? 本篇文章,將會和讀者一起探討這個

大企業的敏捷開發

如今敏捷開發已經成為初創企業的標配,如果運用得當,它能大幅提升企業的創新效率。然而在人數眾多、層級複雜的大企業,敏捷開發能實現麼? 誰說只有小企業才能敏捷開發?這5招讓大象也能跳舞 【2016-06-01 BCG波士頓諮詢】 導讀 許多行業的企

開發框架提高開發效率

在我們接觸的很多專案中,如果有一些參考性的專案框架,那麼做起開發來,事半功倍,一般來說搭建或者積累這些框架性的專案,非一日之功。一般我們可以把具體的專案分為Winfrom、Web、微信、或者Socket等方面,具體專案介面表現不同,但是介面層底下的應該都是差不多的結構,能夠支援多種資料庫的接入,提供更好的介面

幾種C/C++開發的開源搜尋引擎

(1)CLucene CLucene是Lucene的一個C++埠,Lucene是一個基於java的高效能的全文搜尋引擎。CLucene因為使用C++編寫,所以理論上要比lucene快。 (2)Xapian Xapian是一個用C++編寫的全文檢索程式,他的作用類似於Java的lucene。儘管在Java世

msql數據庫處理高並發商品超賣

串行 顯示 字段 pre upd 缺點 訂單 commit 平時 今天王總又給我們上了一課,其實mysql處理高並發,防止庫存超賣的問題,在去年的時候,王總已經提過;但是很可惜,即使當時大家都聽懂了,但是在現實開發中,還是沒這方面的意識。今天就我的一些理解,整理一下這個問題

Java集合框架的講解

下面要開始java中相關集合框架的學習啦。   Are you ready?Let's go~~   今天要講解的Java中的集合框架。   1) 首先檢視jdk中Collection類的原始碼後會發現如下內容:  &nbs

常用前端框架(類似Bootstrap)

轉自部落格園:http://www.cnblogs.com/Renyi-Fan/p/9287632.html   目錄   一、總結 一句話總結:框架大同小異,可以多去各自官網看看效果(比較一下各自的不同點(也就是提供的不同的功能)),然後

源碼分析Handler的postDelayed為什麽可以延時?

.when ear lap zhang cycle pat finall toa variant 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/aliankg/article/details/70842494Thread/

原始碼分析Handler的postDelayed為什麼可以延時?

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/aliankg/article/details/70842494Thread/Hander/Looper是Android在Java執行緒基礎之上提供的執行緒通訊/訊息處理機制,這個眾所周知,不再細說。Handle

JVM模型談十種記憶體溢位的解決方法

原帖地址:https://www.jianshu.com/p/666f0ddb475c 導言: 對於java程式設計師來說,在虛擬機器自動記憶體管理機制的幫助下,不需要自己實現釋放記憶體,不容易出現記憶體洩漏和記憶體溢位的問題,由虛擬機器管理記憶體這一切看起來非常美好,但是一旦出現記憶體溢位或者

RGB色轉為灰度色演算法

一、基礎   對於彩色轉灰度,有一個很著名的心理學公式:                      

Java Executor框架在多執行緒應用中的使用

java平臺一直對併發程式設計和多執行緒有這很好的支援。但在早期這種支援也只是在應用層呼叫原生結構,這種方式最大的缺陷就是使這些原始構件有效的被呼叫;否則,應用將不能正確執行或者不能達到期望結果。

零開始學習音視訊程式設計技術(二) 音訊格式講解

轉自:http://blog.yundiantech.com/?log=blog&id=5 1. 音訊簡介     前面我們說過視訊有一個每秒鐘採集多少張的概念,這就叫做視訊的幀率。     和視訊的幀率一樣的道理,聲音也有一個頻率,叫做取樣率。   

金融IT公司工作10年後到銀行的工作體會

本人目前供職於一家全國性股份制商業銀行總行的電腦部門,在這裡工作剛滿一年。在此前呢,我在國內一家著名的系統整合公司裡連續工作了將近十年的時間,而 且大部份的時間是在銀行的客戶現場做應用軟體的專案實施工作,時間之久這讓很多圈內人聽來很難相信吧。從在乙方工作了十年再轉到甲方工

零開始學習音視訊程式設計技術(一) 視訊格式講解

轉自:http://blog.yundiantech.com/?log=blog&id=4  所謂視訊,其實就是將一張一張的圖片連續的放出來,就像放幻燈片一樣,由於人眼的惰性,因此只要圖片的數量足夠多,就會覺得是連續的動作。 所以,只需要將一張一張的圖片儲存下來

一個App跳到另一APP

 應用場景:        百度地圖等        第三方支付        第三方分享登陸 下面先說幾個概念性東西:      1 URL :統一資源定位符(可以沒有路徑但是必須要有協議頭)      2 scheme: 協議頭,用來決定查詢資源的方式      3

測試角度對測試驅動開發的思考

以及 會有 用戶 計劃 inf 效果 科學 模型 包含 測試驅動開發(TDD)是極限編程的重要特點,它以不斷的測試推動代碼的開發,既簡化了代碼,又保證了軟件質量。本文主要從測試角度出發,從需求分解等四個階段闡述了測試人員在測試驅動開發中所發揮的促進作用 大