你才糙 code !!你全家都糙 code

  1. 程式碼是一種設計作品
  2. 初學不要怕手髒,一定會寫糙 code
  3. 糙 code 提醒我們不要驕傲
  4. 系列目錄
  5. 遺珠
  • 感謝
    1. 參考資料
  • 標題出處[1]

    良好程式碼的優點大同小異。
    不好的程式碼的糙點卻各有巧妙之處。

    如果有人問「如何把程式碼寫好」,我會勸他要小心接觸程式碼品質的書籍 (哈)因為會進入了憤世忌俗的程式碼世界 會看見另一個理想的存在,現實世界的醜陋、無奈、妥協,開發者內心的無知造成的冤枉路,懶得了解問題和懶得寫程式的衝突,不知道永遠都在和自己協作的覺悟。

    上面那一段是開玩笑的。

    程式碼是一種設計作品

    設計師,是為了別人要創作,要溝通,也要用作品溝通
    藝術家,是為了自己而創作,要溝通,只要和自己的內心溝通

    所以「看不懂,是你跟不上我」是藝術家

    需要協作的工作,也需要溝通。我認為它是一種設計作品。設計領域很多道理與程式設計相通,也是後來引用了設計的心理學的原因之一

    初學不要怕手髒,一定會寫糙 code

    這一系列的文章,其實寫得很緊張 因為沒有弄好,就會讓我黑掉
    如果你發現你的程式碼在上面出現,要注意,這真的只是巧合。哈哈

    我想謝謝各個提供程式碼的 github 不要跟我計較是不是拿來當反例。

    感謝過去職場給我的時間,讓我可以看看許多程式碼品質的書籍
    感謝過去我所接觸過的專案,讓我可以累積這麼多的提材可以創作文章。

    其實,糙 code 就像灰塵,是一種要常常檢查、擦掉的東西。
    而且時常要測試程式碼可行,做 prototype 就是糙 code,但是這一切都需要再收尾或者安排在適合的位置,重構流程不就是這樣嗎?

    糙 code 提醒我們不要驕傲

    古代有文人相輕,現代工程師有時也出現互相鄙視[2]

    永遠都有糙 code,永遠都會有人對我們的程式碼不滿,因為理想是如此的遙遠,所以 就放棄追求了 更應該要好好的把握一點一滴可以進步的機會。沒有什麼誰跟不上誰,永遠都只是術業有專攻

    如果你發現某個有名氣、某個受歡迎、大家認為很厲害、合作過的伙伴覺得愉快的人,在某個方面卻比你弱時。千萬不要覺得自得意滿的想電對方(除非對方不好相處,不過基於這個前提,不太可能)或者刁難彼此,因為術業有專攻呀。

    是不是自己可以想想,也許你自己因為沒有名氣、不受歡迎、沒有人認識你,你才有這麼多的時間在技術方面增進(他要是有空,就不會讓你超越了) ,自己在技術上超越這樣的人,就好好的跟他做朋友。讓他推薦你進入他的圈子。

    有實力並不是拿來互歐、互相傷害的,而是拿來競技的,競技要交流、要看場合使出來。

    系列目錄

    依照去年的慣例,第 30 天這一篇都是系列目錄。

    正向的「請具備這樣的觀念」

    1. 「可不可以不要寫糙 code 」指是什麼?
    2. 實務上的高內聚與低耦合
    3. 「聰明」與「自作聰明」的 code
    4. 如何寫高品質 function (命名+參數篇)
    5. 如何寫高品質 function (輸出+輸入篇)
    6. 如何寫高品質 function (內聚性篇)
    7. 技術債是糙 code ?? (上)
    8. 技術債是糙 code ?? (下)
    9. Top down & Bottom up

    消極的「不要這樣做!!!」

    1. 曝露過多的複雜性
    2. 過度使用全域變數
    3. 糙 code 與他們的產地 - if 的判斷式
    4. 宣告與定義太遙遠
    5. 不用前額葉的命名
    6. 不必要的註解
    7. 不要造神 (神一般的物件)
    8. 解決 if-else-if 太多的問題
    9. 不依照語法寫 code
    10. 魔法般的 magic number
    11. 過度焦慮的 try-catch
    12. Short Coding 變 Magic Spell
    13. 糙 code 出沒請小心!! 在 JavaScript 寫 for-loop

    工具、套件、開發環境

    1. 不依照文件寫 code
    2. 過度依賴前置處理器
    3. git log 也可以糙!!
    4. 口耳相傳的建置方式
    5. 用 Containers 減少 if 使用率

    設計評價

    1. 增進開發體驗的基本原則 (上)
    2. 增進開發體驗的基本原則 (下)

    透過 30 天的鐵人文,希望可以讓更多的高手分享相關的議題,可以學習得多的鋩角!!

    遺珠

    就是在這 30 天內,原本有考慮要寫而後來正好沒有寫!

    • ORM 中狂寫 SQL
      • 應該把 SQL 的複雜度封裝在物件中,當作擴充 ORM 一樣。
    • 最有名的糙 code: callback hell
    • 切版的糙 code 相關議題

    感謝

    感謝《Code Complete 2/e》這本雖然出很久了,還是一本超級讚的好書,影響我很多

    《Code Complete 2/e》評價

    博碩有出版一本,是由簡中翻繁中,不過術語有翻譯,算是相當用心的翻譯。
    先前的版本的繁體中文翻譯很不好,除了常見的語句不通順之外,竟然還出現 p.231 頁完全沒有校完稿。不管是天瓏再版的,還是學貫出版的都這樣。(手邊有一本的可以看一下)
    Imgur

    感謝每一個喜歡這一個系列的朋友。希望這一個系列可以讓你在看見糙 code 時不寂莫,你並不是唯一看見世界奇觀的人呀。也可以留言提供素材哦

    參考資料

    [1]: 你才oo,你們全家都oo
    [2]: 軟體工程師的鄙視鏈