通州北大青鳥指導(dǎo):Java編程的十個(gè)原則(1)

北京北大青鳥老師介紹,Java編程最基本的原則就是要追求高內(nèi)聚和低耦合的解決方案和代碼模塊設(shè)計(jì)。查看Apache和Sun的開放源代碼能幫助你發(fā)現(xiàn)其他Java設(shè)計(jì)原則在這些代碼中的實(shí)際運(yùn)用。雖然實(shí)際案例是學(xué)習(xí)設(shè)計(jì)原則或模式的最佳途徑,但通過通州北大青鳥老師的介紹,沒有接觸過這些原則或還在學(xué)習(xí)階段的Java程序員也能夠了解這10個(gè)面向?qū)ο蟮脑O(shè)計(jì)原則。

原則1:DRY(Don't repeat yourself)

即不要寫重復(fù)的代碼,而是用“abstraction”類來(lái)抽象公有的東西。如果你需要多次用到一個(gè)硬編碼值,那么可以設(shè)為公共常量;如果你要在兩個(gè)以上的地方使用一個(gè)代碼塊,那么可以將它設(shè)為一個(gè)獨(dú)立的方法。SOLID設(shè)計(jì)原則的優(yōu)點(diǎn)是易于維護(hù),但要注意,不要濫用,duplicate 不是針對(duì)代碼,而是針對(duì)功能。這意味著,即使用公共代碼來(lái)驗(yàn)證OrderID和SSN,二者也不會(huì)是相同的。使用公共代碼來(lái)實(shí)現(xiàn)兩個(gè)不同的功能,其實(shí)就是近似地把這兩個(gè)功能永遠(yuǎn)捆綁到了一起,如果OrderID改變了其格式,SSN驗(yàn)證代碼也會(huì)中斷。因此要慎用這種組合,不要隨意捆綁類似但不相關(guān)的功能。

原則2:封裝變化

在軟件領(lǐng)域中唯一不變的就是“Change”,因此封裝你認(rèn)為或猜測(cè)未來(lái)將發(fā)生變化的代碼。OOPS設(shè)計(jì)模式的優(yōu)點(diǎn)在于易于測(cè)試和維護(hù)封裝的代碼。如果你使用Java編碼,可以默認(rèn)私有化變量和方法,并逐步增加訪問權(quán)限,比如從private到protected和not public。有幾種Java設(shè)計(jì)模式也使用封裝,比如Factory設(shè)計(jì)模式是封裝“對(duì)象創(chuàng)建”,其靈活性使得之后引進(jìn)新代碼不會(huì)對(duì)現(xiàn)有的代碼造成影響。

原則3:開閉原則

即對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。這是另一種非常棒的設(shè)計(jì)原則,可以防止其他人更改已經(jīng)測(cè)試好的代碼。理論上,可以在不修改原有的模塊的基礎(chǔ)上,擴(kuò)展功能。這也是開閉原則的宗旨。(北京北大青鳥校區(qū))

原則4:?jiǎn)我宦氊?zé)原則

類被修改的幾率很大,因此應(yīng)該專注于單一的功能。如果你把多個(gè)功能放在同一個(gè)類中,功能之間就形成了關(guān)聯(lián),改變其中一個(gè)功能,有可能中止另一個(gè)功能,這時(shí)就需要新一輪的測(cè)試來(lái)避免可能出現(xiàn)的問題。

原則5:依賴注入或倒置原則

這個(gè)設(shè)計(jì)原則的亮點(diǎn)在于任何被DI框架注入的類很容易用mock對(duì)象進(jìn)行測(cè)試和維護(hù),因?yàn)閷?duì)象創(chuàng)建代碼集中在框架中,客戶端代碼也不混亂。有很多方式可以實(shí)現(xiàn)依賴倒置,比如像AspectJ等的AOP(Aspect Oriented programming)框架使用的字節(jié)碼技術(shù),或Spring框架使用的代理等。(北京北大青鳥校區(qū),未完待續(xù))

北大青鳥網(wǎng)上報(bào)名
北大青鳥招生簡(jiǎn)章