什么是快速開發框架

什么是快速開發框架

前言

做為一個程序員,在開發的過程中會發現,有框架同無框架,做起事來是完全不同的概念,關系到開發的效率、程序的健壯、性能、團隊協作、后續功能維護、擴展......等方方面面的事情。很多朋友在學習搭建自己的框架,很多公司也在創建或使用自己的框架,網上開源的框架多如牛毛,每年新上線的各種框架也不知多少。而不停的重復造輪子,也讓更多的朋友鳥槍換炮,越跑越快,工作效率越來越高。那么什么是快速開發框架呢?

什么是快速開發框架

???快速開發框架是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法; 另一種定義認為,框架是可被應用開發者定制的應用骨架。前者是從應用方面而后者是從目的方面給出的定義。

???可以說,一個快速開發框架是一個可復用的設計構件,它規定了應用的體系結構,闡明了整個設計、協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類以及其實例之間協作的方法,它為構件復用提供了上下文(Context)關系。因此構件庫的大規模重用也需要快速開發框架。

???應用快速開發框架指的是實現了某應用領域通用完備功能(除去特殊應用的部分)的底層服務。使用這種框架的編程人員可以在一個通用功能已經實現的基礎上開始具體的系統開發。框架提供了所有應用期望的默認行為的類集合。具體的應用通過重寫子類(該子類屬于框架的默認行為)或組裝對象來支持應用專用的行為。

??快速開發框架,即。其實就是某種應用的半成品,就是一組組件,供你選用完成你自己的系統。簡單說就是使用別人搭好的舞臺,你來做表演。而且,快速開發框架一般是成熟的,不斷升級更新的軟件

????簡單來講,軟件開發框架可以理解為我們起樓房時,用梁 柱子 承重墻做起來的鋼筋混凝土結構框架。而實現的軟件功能,也就像在這個快速開發框架結構中所要實現的不同類型、功能的房子,比如停車場、商場、酒店、飯店、商住房......

  功能強大,結構扎實的框架,可承載的類型就更多,適用性就更強。

不論是什么開發框架,都是為現實不同的業務功能而創建的。好的快速開發框架能提高企業的競爭能力,包括降低開發成本、提高產品質量、改善客戶滿意程度、控制開發進度等。同時,快速開發框架也是某一領域為實現某種業務的知識積累,它是一種持續性的活動,隨著特定業務功能實現而創建,且跳出軟件開發周期而存活。一個成熟的快速開發框架,不單單只是代碼而已,它除了將某一領域業務的基礎功能以代碼的方式實現外,還必須編寫對應的文檔、模型、流程圖、數據字典、開發使用說明.....等一系列的文檔來支撐,這樣的快速開發框架才更加成熟和健壯。

為什么要使用快速開發框架

  軟件系統隨著業務的發展,變得越來越復雜,不同領域的業務所涉及到的知識、內容、問題非常非常多。如果每次都從頭開發,那都是一個很漫長的事情,且并不一定能將它做好。團隊協作開發時,沒有了統一標準,大家各寫各的,同樣的重復的功能到處都是。由于沒有統一調用規范,很難看懂別人寫的代碼,出現Bug或二次開發維護時,根本無從下手。(無框架不堪回首的黑暗日子請看前面章節的講述)

而一個成熟的快速開發框架,它是模板化的代碼,它會幫我們實現很多基礎性的功能,我們只需要專心的實現所需要的業務邏輯就可以了。而很多底層功能操作,就可以完完全全不用做太多的考慮,快速開發框架已幫我們實現了。這樣的話,整個團隊的開發效率可想而知。另外對于團隊成員的變動,也不用太過擔心,快速開發框架的代碼規范讓我們能輕松的看懂其他開發人員所寫的代碼。

搭建快速開發框架時,我們要如何定位

  是不是快速開發框架的擴展性、可移值性、功能越強大就越好呢?

  好的快速開發框架是相對的,它都有自己特定的應用領域,合適才是最好。

  個人覺得在實際開發中要根據具體情況來看的,因為功能越全面它的復雜度就越大,所需要的開發人員能力和技能就會要求更高,付出的成本也就最大。比如做一個還未發展起來的電商網就想 將系統做成像京東那樣,直接用京東分模塊分布式的框架來開發,那得怎么來組建這個團隊?更不用說開發成本了。就算團隊有能力做到,也沒有那個必要這么去做,因為從成本預算和開發周期等方面來看,得不嘗失,更多的可能項目還未完成公司就給拖垮了。

   一般來說,一個中小型項目,1到5人左右的開發團隊,使用一般的三層結構就可以了,不用去細想框架要分三層還是五層,每個層之間要怎么實現解耦,要用什么設計模式.....因為當今飛速發展的互聯網時代,快才是王道,做一個中小型項目能用一周完成的,絕不能拖了一個月還未做完。人工與時間成本才是重點中 的重點,唯有快才能更好的生存下來并壯大。至于擴展功能、接口、分布式、并發、大數據......等等問題,實際上過早考慮太多并不是好事情,有經驗的程序員在寫這個快速開發框架時早已留下擴展方案或思路,而沒到這一層次的開發人員你想再多也可能想不明白,還不如先做出來積累一定經驗后再慢慢學習,慢慢升級框架。

  當然也不是說設計框架時不用考慮高內聚低耦合,而是要根據自己的能力與經驗來設計出自己能把控的框架出來。因為框架不是開發出來后就不再變動,它也需要不停的進行升級,將你所學到的新知識新技術融合到框架中,使它的功能更加強大,更加健壯。而對于自己不能把控的快速開發框架,在團隊協作開發和上生產環境后,你就發現有一大堆的坑等著你去填埋,這種框架只能拿來先練練手,有空再慢慢完善。

  快速開發框架通過小步快跑,不斷的迭代升級來慢慢擴展的,當項目上生產環境后,根據新的需求和所碰到的問題,去不停的調整,最終越來越強大。所有框架都是從1.0版本到2.0、3.0......發展而來,而不是直接跳過最初版本到最終成熟版本。

   所以說我們在創建一個框架時,必須根據我們當前個人的技術能力、團隊成功技術水平、時間、投入成本、項目現狀(規模與需求復雜程度)、以后的發展前景來決定所要開發的框架的最終設計方案。當然也不是說不能一步到位,心有多大世界就有多大,只要個人能力和團隊能力配得上,老板資金成本雄厚,時間充足,直接上大項目使用超級框架也完全沒有問題。

快速開發框架的主要特點和要求

  1、代碼模板化

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

?

  2、重用

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

  3、高內聚(封裝)

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

  4、規范

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

  5、可擴展

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

  6、可維護

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

  7、協作開發

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

  8、通用性

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

謝謝大家,一路走來數個年頭,感謝快速開發框架的支持者與使用者,大家可以通過下面的網址了解更多

官方網址:learun.cn

本文轉載于:猿2048https://www.mk2048.com/blog/blog.php?id=h20a1j&title=什么是快速開發框架

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/371159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/371159.shtml
英文地址,請注明出處:http://en.pswp.cn/news/371159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java中的math.abs_Java.math.BigDecimal.abs()方法

全屏Java.math.BigDecimal.abs()方法java.math.BigDecimal.abs()返回一個BigDecimal,其值是此BigDecimal的絕對值,其標度是this.scale()。聲明以下是java.math.BigDecimal.abs()方法的聲明public BigDecimal abs()參數NA返回值此方法返回的名為value&…

我需要多少內存

什么是保留堆? 我需要多少內存? 在構建解決方案,創建數據結構或選擇算法時,您可能會問自己(或其他人)這個問題。 如果此圖包含1,000,000條邊并且我使用HashMap進行存儲,此圖是否適合我的3G堆&am…

C語言程序設計預報作業

1閱讀鄒欣老師的博客--師生關系,針對文中的幾種師生關系談談你的看法,你期望的師生關系是什么樣的? 答:我認為文中的師生關系都存在一些缺陷,第一種師生關系是建立在病態關系上的,學生不是植物自然有自己的思想。所以我…

淺談23種設計模式

淺談23種設計模式 類之間的關聯關系:在使用Java、C#和C等編程語言實現關聯關系時,通常將一個類作為另一個類的屬性。   (1)雙向關聯,兩個類互相為各自的屬性,比如顧客類Customer和商品類Product,顧客擁有商品&#x…

網頁布局基礎

1、盒子模型的第一層到第五層: border、padding content、background-image、background-color、margin 2、清除浮動。對受到浮動影響的標簽作以下操作: 1、clear: both; 2、clear: right; clear: left; 3、設置寬度width: 100%(或者固定寬度) overflow…

mysql與串口通信_虛擬機串口與主機串口通信·小程序(下)

上次說到的,不能做到實時通信。那么開兩個進程就可以了,一個用來監聽是否有消息傳來,一個用來等待用戶輸入。那么,先來復習一下進程的相關概念。進程結構linux中進程包含PCB(進程控制塊)、程序以及程序所操縱的數據結構集&#xf…

淺談我所見的CSS命名風格

在兩年工作中,總結一下我所見的css命名風格。 1.單一class命名 .header {width: 500px; } .item {text-indent: 20%; } 優點:簡單,渲染效率高。 缺點:零散,沒有模塊化。 2. 后代選擇器class命名 .header .item a {font…

Java規范請求中的數字

你們都了解Java社區流程 (JCP),不是嗎? JCP是為Java技術開發標準技術規范的機制。 任何人都可以注冊該站點并參與對Java規范請求(JSR)的審查和提供反饋,并且任何人都可以注冊成為JCP成員&#x…

ORACLE MOS 翻譯

http://blog.csdn.net/msdnchina/article/details/53174196轉載于:https://www.cnblogs.com/zengkefu/p/6665950.html

自從我這樣擼代碼以后,公司網頁的瀏覽量提高了107%!

歡迎大家前往騰訊云 社區,獲取更多騰訊海量技術實踐干貨哦~ 本文由騰訊IVWEB團隊發表于云 社區專欄 作者:yangchunwen HTTP協議是前端性能乃至安全中一個非常重要的話題,最近在看《web性能權威指南(High Performance Browser Networking)》&a…

python數列分段_按范圍分段的Python數組

首先,定義你的“極”數第二,根據這些“極”數生成間隔第三,定義盡可能多的列表。在然后,對于每個間隔,掃描列表并在相關列表中添加屬于該間隔的項代碼:source [1, 4, 7, 9, 2, 10, 5, 8]poles (0,3,6,25)…

51nod 1278 相離的圓

基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 平面上有N個圓,他們的圓心都在X軸上,給出所有圓的圓心和半徑,求有多少對圓是相離的。例如:4個圓分別位于1, 2, 3, 4的位置&…

讓我們將包變成模塊系統!

使用構建系統將許多項目分為模塊/子項目( Maven , Gradle , SBT …); 編寫模塊化代碼通常是一件好事。 將代碼分為構建模塊主要用于: 隔離代碼部分(減少耦合) api / impl拆分 僅將…

R語言日期的表示和運算(詳細總結)

1、取出當前日期 Sys.Date() [1] "2014-10-29" date() #注意:這種方法返回的是字符串類型 [1] "Wed Oct 29 20:36:07 2014" 2、在R中日期實際是double類型,是從1970年1月1日以來的天數 typeof(Sys.Date()) [1] "double" …

html高度塌陷問題解決

高度塌陷的問題: 當開啟元素的BFC以后,元素將會有如下的特性 1 父元素的垂直外邊距不會和子元素重疊 開啟BFC的元素不會被浮動元素所覆蓋 開啟BFC的元素可以包含浮動的子元素 如何開啟元素的BFC 設置元素浮動 設置元素絕對定位 …

java空格鍵_Java KeyPressed-如果其他鍵也太舊,則無法檢測是否按下了空格鍵

如標題所示,在我的Java游戲中,無法檢測是否同時按下空格鍵和其他鍵。例如,空格鍵是射擊鍵,而箭頭鍵則使玩家移動。如果我按下向上箭頭鍵,向左箭頭鍵和空格鍵,那么它應該向左上方發射子彈。但是,…

How to fix the bug “Expected required, optional, or repeated.”?

參考:https://github.com/tensorflow/models/issues/1834 You need to download protoc version 3.3 (already compiled). Used protoc inside bin directory to run this command like this:tensorflow$ mkdir protoc_3.3tensorflow$ cd protoc_3.3tensorflow/prot…

立面設計模式–設計觀點

在上一篇文章中,我們描述了適配器設計模式 。 在今天的文章中,我們將展示另一種類似的“四結構幫派”模式 。 顧名思義,結構模式用于從許多不同的對象形成更大的對象結構。 外觀模式就是這樣一種模式,它為系統內的一組接口提供了簡…

Java第三次作業 1502 馬 帥

《Java技術》第三次作業 (一)學習總結 1.書中對面向對象封裝性的定義為:指把對象的屬性和行為看成一個密不可分的整體,把不需要讓外界知道的信息隱蔽起來。簡單來說,就是定義的一些對象,只有在本類中才可以…

sass運算

sass具有運算的特性,可以對數值型的Value(如:數字、顏色、變量等)進行加減乘除四則運算。 請注意運算符前后請留一個空格,不然會出錯。 scss.style css.style 本文轉載于:猿2048https://www.mk2048.com/blog/blog.php?idiij12j&titles…