爲何好麼些人在談論怎麼作完美,而不是怎麼作好?

這是我在segmentfault回答的一個問題裏的回覆,以爲寫的挺多的有點惡搞在裏面,拿來給大夥分享一下。css

其實作了這些年的項目,經歷和見識了不少種的設計。
好比:給你文檔要你徹底按照文檔來寫甚至每一個service裏面的方法名都有規範,只是沒有嚴格 到怎麼去實現他們,我以爲這就是半填空的coding;java

有一種是徹底填空的coding甚至說調用的方法都有參考文檔,讓你來作的目的就是把誰調用誰填進去,這種是徹底填空coding;sql

需求拿來本身設計本身來實現,我以爲這是全包的coding啊,小公司不少這樣;還有一種接手的項目已經存在且有本身的 架構了,咱們作的目的就是來完美它豐滿它;segmentfault

公司有個新的案子要從頭來作,大家團隊中有架構有pg有qa,各司其職這種應該算是比較正常的了。設計模式


上面說的這些例子有沒有發現一個問題,除了嚴格的限制你要作什麼和你只能作什麼之外,其實在團隊開發中你身處的角色決定了這個框架的走向,作ui的 只是在意view,甚至他們只是看js css純ui哦!作service的只是在意前臺和他交互,他怎麼和dao去交互。作dao只在意怎麼把service告訴個人東西再交給db,怎麼把 db的東西交給service。架構

說的這些可能會認爲我跑題太嚴重了,其實否則!我舉的例子不可能包含了所有,還只是很小的一部分,就和設計模式同樣,曾經看到有人說「什麼設計 模式啊,不少的這種所謂的設計模式放到其餘的語言都沒有意義」(我是搞java的),他說的有些是對的,正如中國從古代就講究不完美同樣,那個怎麼說來 着?「大道五十,天衍四十九,留一線生機,遁去一道」,別吵!我不是看仙俠小說看多了!mvc

我想說的實際上是沒有完美的!人不完美,事物也不完美,隨着你的學識、見聞、體驗總能從之前看似完美的東西里面去找出不完美的一面,因此你們仍是不要 費勁的去追求完美了,若是完美了就不會有什麼多少種的設計模式了,一種足以,還有什麼nosql,還有什麼mvc框架,mvc只是個主流而已,還有不少叫 不上名字的(由於人家可能根本沒起個好聽的名字)。框架


好吧,題主的問題我到如今都沒有認真的回覆這是不對的,上面這些就是想說一個道理,作本身在這個時刻認爲是對的事情就能夠了,之後的事情能夠適當的去想,可是你的這個之後其實也是有個長度的,想的老是不會太遠。nosql

這裏開始說下問題的回答。函數

public class OrderComposeService{
        public void  composeOrder(){
            //TODO
        }

        public void  composeSku(){
            //TODO
        }
    }

這段代碼,你以爲和上下文不一致性,「關於業務分層」的帖子特地去看了下,後面有人提到用helper,manager,facade來作那段「不 和諧」的代碼都對,哪怕你準備用XX來作均可以的,不就是個名字嗎?我們要的是種思想!我意識到了這段「不和諧」,我就去讓它看上去「和諧」點唄。

其實咱們周圍的寫的不少代碼,都是過程式的書寫。

這句話我很是認同,還記得學oo以前,老師跟我吹呼說不少的語言都是過程的、函數的、程式的、方法的,java但是面向對象的,聽上去高大上,但實際呢?就好像天天在家裏看ccav很是美好,但出門怎麼樣?現實和想象老是有差距的。

真正去使用的時候老是圖省事沒有寫「繁瑣」的oo代碼,好比下面這段

class 我{
     N種牛X的屬性。。。
     public void 作超人(){
         無敵了。。想到什麼都寫這裏
     }
}

一個method就是超人了,牛不牛?寫的時候爲何就不想一想,最少得有個紅褲衩傳給你才能變身呢?超人會幹啥?眼睛冒激光,這不得有個光學的類 嗎?力大無窮?好麼這最少牽扯到了人體學。還能飛呢!咱們在這能把人體學重用了!超人不是還有女的嗎?可是女超人有件事不能作哦!

class 她{
    N種牛X的屬性。。。
    public void 作超人(){
        無敵了(比「我」差一點 ,有件事不能作!)。。想到什麼都寫這裏
    }
}

ps:我是男的,因此上面沒寫男超人,呵呵。

好吧,女超人比較慘我們讓她少作一件事,但他們都是超人啊!怎麼能寫2個類?就要寫一個!可是我就一個作超人的method啊,怎麼辦?這樣吧,咱弄個子類繼承男超人的優勢吧!不行咱就重載一下作超人的method好了。下面就不寫了,多態的孩子快出來了。

上面惡搞了一下,不少概念工做年頭多了的人都明白,其實概念不會是記的很清楚,可是都知道是怎麼回事,我也記的不是很清楚,但就是隨便寫了,哪怕看到的可能有問題,但老是從一個角度去看能夠說通!

這不就是設計嗎?這不就是分層嗎?這不就是學以至用嗎?學java之初說的那個oo的概念,其實我總以爲和那句「道可道,很是道」很相同,道不是說 他們說的事情相同,而是那種描述的感受很像,有些事情可能說不清楚,可是你明白,這就是隻可意會不可言傳啊,以前在segmentfault看到過個例子 (人類玩撲克開車之類的……)幫忙說怎麼寫class,仍是segmentfault的人很少,或者不少人瞧不上這種問題,我敢說若是有100我的讓他們 去寫,可能會出現101種方式,你不能要求一我的只能寫一種。

相關文章
相關標籤/搜索