為什么優(yōu)秀的程序員也是優(yōu)秀的設計師

在高科技行業(yè)中,我聽過很多偉大的開發(fā)人員聲稱對設計一無所知。他們將設計當作是一個神秘的世界,一個編程世界之外的世界。他們覺得他們永遠無法“干”設計的工作,因為他們根本沒有關(guān)于這方面與生俱來的能力。

但是請恕我不敢茍同。好的編程也是不錯的設計。因為,好的代碼是經(jīng)過精心設計的代碼。任何能寫出好代碼的程序員其實也是在寫經(jīng)過精心設計的代碼。定義什么是優(yōu)秀代碼的原則驚人地相似于何為優(yōu)秀設計的原則。

不信的話,請看Dieter Rams的Ten Principles of Good Design,不知道你發(fā)現(xiàn)了沒有,在幾乎所有情況下,你都可以用”代碼“一詞取代”設計“,用”軟件“一詞取代”產(chǎn)品“,然后你就得到了關(guān)于如何編寫好代碼的原則。

圖片
圖片

好的代碼是創(chuàng)新性的

這是顯而易見的,當你寫代碼時,你的目的是盡可能地用最好的方法解決問題。

好的代碼讓軟件有用

如果你正在寫的代碼不能在軟件中發(fā)揮作用,而且也不利于其他一些有用的代碼,那么很可能這些代碼是沒有必要的,而不必要的代碼通常是不好的代碼。

好的代碼具有審美趣味

好的代碼易于閱讀,優(yōu)秀程序員知道,花時間去想一個明確的名字、分解功能、致力于代碼的可讀性是值得的。好的代碼在屏幕上會有一種美感。它總是被很好地執(zhí)行、規(guī)劃和組織。

好的代碼讓軟件更易于理解

此外,分解功能,以及選擇有意義的方法名和變量名在好代碼中是必不可少的,并且能夠表達代碼的目的,使代碼更易于理解。難于理解的代碼往往是不好的代碼。

好的代碼不唐突

好的代碼不會打擾其他代碼,會保持代碼的SOLID原則,而這對于創(chuàng)建良好的可維護代碼非常重要。當這個方法干擾到另一個方法時,它會導致我們很難管理代碼。方法本身應該是獨立的,這樣才能更易于管理,更易于重用。

好的代碼言行一致

確保代碼的行為和它的名字和目的保持一致,分解這些問題在代碼中很重要。如果你的方法是一個命名函數(shù),那么它應該只需命名即可,不需要做其他。它不應該提供保存、更新、重命名、刪除以及其他任何凡是定義中沒有明確說明的功能。

好的代碼是持久性的

創(chuàng)建易于管理,易于維護的代碼非常重要??赡苣愕哪承┐a在10年之后依然在被使用,但如果你創(chuàng)建了一堆不好的混雜了問題的代碼,那么它們就會時不時地成為你前進路上的攔路虎,讓你頭痛不已。

好的代碼周密詳盡

好的代碼是對問題經(jīng)過全面周詳考慮的解決方法,事無巨細,面面俱到。這包括徹底測試不同的情況,使得解決方案盡可能地準確有效。

好的代碼對環(huán)境友好

可能聽上去有點夸張,但好的代碼確實以一種不同于實物的方式做到了對環(huán)境友好。好的代碼會友好地對待軟件環(huán)境,它不會重復代碼,它會做好它應該做的事,并分解問題。不好的代碼會對軟件環(huán)境產(chǎn)生不良的影響,它會造成代碼污染,讓項目變得“丑陋不堪”(就像真正的環(huán)境污染一樣)。

好的代碼總是盡可能地精簡

好的代碼旨在創(chuàng)造優(yōu)雅的解決方案,做它應該做的事情,不重復代碼,并且經(jīng)過很好地組織。最大的項目膨脹是由于方法重復,組織不良以及分解事物要點的關(guān)注點混雜而造成的。好的代碼會精簡化事情,簡化到核心功能,然后合并這些核心功能以建立軟件。

綜上所述,那些能寫出好代碼的程序員也是真正的設計師,他們用于創(chuàng)造解決問題最佳方案所遵循的原則,與作為最優(yōu)秀的設計師所要堅守的原則幾乎如出一轍。好的代碼就是經(jīng)過精心設計、精心雕琢卻又不顯唐突、持久、易于使用、易于閱讀、可管理且又有用的簡單代碼。好代碼與最佳UI和最美家具的生產(chǎn)方式相同,只是很多人沒有意識到而已。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 本文把程序員所需掌握的關(guān)鍵知識總結(jié)為三大類19個關(guān)鍵概念,然后給出了掌握每個關(guān)鍵概念所需的入門書籍,必讀書籍,以及...
    dle_oxio閱讀 11,403評論 6 244
  • 開始進入學習骨盆知識的筆記整理中。 專業(yè)知識來源于李哲老師的解剖課程。 說在前面的話:這是我開始學習解剖的整理記錄...
    舒涵vivian閱讀 1,841評論 3 12
  • 印象中的集裝箱, 常常存在于港口碼頭, 作為大型裝貨容器被用于貨物運輸, 工業(yè)味十足。 用它搭建展示區(qū), 會有什么...
    景觀邦閱讀 693評論 0 0
  • 初體驗 深夜食堂在愛奇藝開播后,迎來罵聲一片。無非是說照搬國外生硬尷尬亦或者某某女星尬演技。 在我看來,演技固然重...
    牛哆圓閱讀 444評論 0 0

友情鏈接更多精彩內(nèi)容