最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

約定優(yōu)于配置_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

 更新時(shí)間:2017年08月11日 10:27:08   作者:shan9liang  
以前做項(xiàng)目,總是寫(xiě)Ant配置文件,滿足于自己更靈活的配置,而沒(méi)有去思考,這么做到底值不值得

開(kāi)始嘗試使用Maven構(gòu)建項(xiàng)目的時(shí)候,驚訝于只需要簡(jiǎn)單的幾行xml就可以完成原來(lái)ant需要大量xml才能完成的工作。不得不說(shuō),人們?cè)诮?jīng)過(guò)一定技術(shù)積累后,總能想到辦法簡(jiǎn)化自己的工作。以前做項(xiàng)目,總是寫(xiě)Ant配置文件,滿足于自己更靈活的配置,而沒(méi)有去思考,這么做到底值不值得。

想象一下,如果我們每個(gè)人都滿足于自己的私欲,為所欲為,我們的世界會(huì)亂成什么樣子?在軟件世界里,如果每個(gè)程序員都定義一套自己的規(guī)范,那么我們的軟件會(huì)亂成什么樣子?各個(gè)版本的瀏覽器就已經(jīng)讓眾多程序員頭痛不已了,更別提其他的了。想到這,你有沒(méi)有感覺(jué),其實(shí)java的成功,xml的成功,maven的成功都有其必然性,他們的設(shè)計(jì)理念都包含一個(gè)很簡(jiǎn)單但很深刻的道理,那就是“通用”。

為什么通用?因?yàn)樽裱s定。

通用又會(huì)帶來(lái)另一個(gè)好處,那就是學(xué)習(xí)成本低,當(dāng)新人加入的時(shí)候,很容易上手,主要他了解約定,或者說(shuō)規(guī)范就可以了。對(duì)比一下相同項(xiàng)目的ant腳本和maven腳本,也就是build.xml和pom.xml,你就會(huì)明白,我為什么說(shuō)學(xué)習(xí)成本低了。如果沒(méi)有約定,沒(méi)有構(gòu)建標(biāo)準(zhǔn),n個(gè)項(xiàng)目可以能就要有n中項(xiàng)目目錄結(jié)構(gòu),n種構(gòu)建方式。

這種遵循約定寫(xiě)xml配置的方式就是最優(yōu)的了嗎?只能說(shuō)是相對(duì)罷了。如果我們嚴(yán)格遵循約定,甚至可以省略掉xml的編寫(xiě),因?yàn)閤ml可能會(huì)帶來(lái)管理上的混亂。

眾多javaweb的程序員一定都有編寫(xiě)ssh的xml配置文件的經(jīng)歷,而不知道你是否了解Rails。

Rails 的核心理念也是約定優(yōu)于配置,這意味著在Rails中不會(huì)出現(xiàn)XML配置文件。Rails使用Web應(yīng)用多年來(lái)積累的各種常見(jiàn)約定(更具體地說(shuō)是命名規(guī)則)來(lái)代替XML配置文件,而在Rails內(nèi)部的映射與發(fā)現(xiàn)機(jī)制根據(jù)這些約定可以實(shí)現(xiàn)對(duì)象之間的關(guān)聯(lián)。

使用約定來(lái)代替XML配置文件說(shuō)明Rails本身完成了大量的底層工作,這意味著使用更少的代碼來(lái)實(shí)現(xiàn)應(yīng)用程序是極有可能的。此外,代碼量的縮減也減小了出現(xiàn)bug的可能性,降低了維護(hù)程序和升級(jí)程序的難度。

如果你有一種“強(qiáng)迫癥”,發(fā)現(xiàn)程序員多少都有點(diǎn)強(qiáng)迫癥,哈哈,就是不愿意遵循約定怎么辦?我只能再寫(xiě)幾句來(lái)試圖說(shuō)服你。你真的需要那么做嗎?你真的需要那么個(gè)性嗎?個(gè)性意味著什么?沒(méi)有通用性。沒(méi)有通用性意味著什么?死亡。你可能還會(huì)質(zhì)疑,微軟的很多東西都沒(méi)有通用性,只能運(yùn)行于windows平臺(tái),照樣活得好好的。但你有沒(méi)有想過(guò)全球那么多windows用戶,windows的通用性是不可質(zhì)疑的,間接使運(yùn)行在它之上的軟件擁有了一定的通用性。如果你還要再舉蘋(píng)果,好吧,朋友,你極端了。個(gè)性意味著復(fù)雜,沒(méi)有人喜歡復(fù)雜的東西。

既然遵循約定那么有優(yōu)勢(shì),是不是我們就該放棄配置,以約定為王?還得用maven和ant來(lái)說(shuō)事。如果你目前的構(gòu)建包含一些高度自定義的過(guò)程,或者你的項(xiàng)目結(jié)構(gòu)不能輕易變更為maven規(guī)定的項(xiàng)目結(jié)構(gòu),或者你已經(jīng)寫(xiě)了一些 Ant 腳本通過(guò)一種明確的方法完成一個(gè)明確的過(guò)程,而這種過(guò)程不適合 Maven 標(biāo)準(zhǔn),你仍然可以使用ANT,或者將ANT腳本作為Maven的一個(gè)插件。從這個(gè)角度來(lái)看,約定不能干所有事情,總有一些是需要你自定義完成的。

綜上,遵循約定雖然損失了一定的靈活性,但可以減少配置,降低復(fù)雜性,降低學(xué)習(xí)成本呢,使程序更優(yōu)美。所以,我更傾向于約定優(yōu)于配置。

相關(guān)文章

  • Springboot+AOP實(shí)現(xiàn)時(shí)間參數(shù)格式轉(zhuǎn)換

    Springboot+AOP實(shí)現(xiàn)時(shí)間參數(shù)格式轉(zhuǎn)換

    前端傳過(guò)來(lái)的時(shí)間參數(shù),后端可以自定義時(shí)間格式轉(zhuǎn)化使用,這樣想轉(zhuǎn)成什么就轉(zhuǎn)成什么。本文將利用自定義注解AOP實(shí)現(xiàn)時(shí)間參數(shù)格式轉(zhuǎn)換,感興趣的可以了解一下
    2022-04-04
  • JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例

    JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例

    ajax技術(shù)是使頁(yè)面能局部刷新的一種技術(shù),下面這篇文章主要給大家介紹了關(guān)于JavaWeb之Ajax的基本使用與實(shí)戰(zhàn)案例的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-08-08
  • Kafka?Producer中的消息緩存模型圖解詳解

    Kafka?Producer中的消息緩存模型圖解詳解

    Kafka中消息是以Topic進(jìn)行分類的,生產(chǎn)者生產(chǎn)消息,消費(fèi)者消費(fèi)消息,都是面向Topic的,下面這篇文章主要給大家介紹了關(guān)于Kafka?Producer中消息緩存模型的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • java中synchronized關(guān)鍵字的3種寫(xiě)法實(shí)例

    java中synchronized關(guān)鍵字的3種寫(xiě)法實(shí)例

    synchronized是Java中的關(guān)鍵字,是一種同步鎖,下面這篇文章主要給大家介紹了關(guān)于java中synchronized關(guān)鍵字的3種寫(xiě)法,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • Java中json使用方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java中json使用方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    JSON(JavaScript Object Notation) 是一種輕量級(jí)的數(shù)據(jù)交換格式, json是個(gè)非常重要的數(shù)據(jù)結(jié)構(gòu),在web開(kāi)發(fā)中應(yīng)用十分廣泛。下面通過(guò)本文給大家講解Java中json使用方法,感興趣的朋友一起看看吧
    2017-07-07
  • JavaWeb導(dǎo)出Excel文件并彈出下載框

    JavaWeb導(dǎo)出Excel文件并彈出下載框

    這篇文章主要為大家詳細(xì)介紹了JavaWeb導(dǎo)出Excel文件并彈出下載框的相關(guān)資料,感興趣的小伙伴們可以參考一下
    2016-06-06
  • SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄

    SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄

    這篇文章主要介紹了SpringMVC攔截器實(shí)現(xiàn)單點(diǎn)登錄,簡(jiǎn)單介紹了springmvc攔截器,單點(diǎn)登錄實(shí)現(xiàn)原理等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 用java生成html文件實(shí)現(xiàn)原理及代碼

    用java生成html文件實(shí)現(xiàn)原理及代碼

    用printStream來(lái)向html文件里輸出數(shù)據(jù),先創(chuàng)建一個(gè)StringBuilder對(duì)象,通過(guò)append方法來(lái)為其添加html語(yǔ)句,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助
    2013-08-08
  • Java中instanceof 關(guān)鍵字的使用

    Java中instanceof 關(guān)鍵字的使用

    instanceof通過(guò)返回一個(gè)布爾值來(lái)指出,某個(gè)對(duì)象是否是某個(gè)特定類或者是該特定類的子類的一個(gè)實(shí)例,本文就來(lái)詳細(xì)的介紹一下instanceof 關(guān)鍵字的使用,感興趣的可以了解一下
    2023-10-10
  • Java使用itextpdf實(shí)現(xiàn)生成PDF并添加圖片,水印和文字

    Java使用itextpdf實(shí)現(xiàn)生成PDF并添加圖片,水印和文字

    這篇文章主要為大家詳細(xì)介紹了Java在使用itextpdf實(shí)現(xiàn)生成PDF時(shí)如何實(shí)現(xiàn)添加圖片,水印和文字等效果,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02

最新評(píng)論

宜良县| 霍州市| 章丘市| 白玉县| 托克逊县| 垫江县| 酒泉市| 都安| 民和| 绥芬河市| 交城县| 前郭尔| 苏尼特右旗| 阜康市| 齐齐哈尔市| 诏安县| 曲沃县| 沙湾县| 梓潼县| 松江区| 凤山市| 开封市| 罗江县| 石狮市| 太保市| 莱西市| 新河县| 哈巴河县| 增城市| 海林市| 夹江县| 高要市| 西乌珠穆沁旗| 建平县| 来宾市| 京山县| 太仆寺旗| 吴堡县| 青川县| 花莲县| 扬中市|