iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 30
14

標題出處[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]: 軟體工程師的鄙視鏈


上一篇
軟體架構的 Top down & Bottom up
系列文
可不可以不要寫糙 code30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
SunAllen
iT邦研究生 1 級 ‧ 2018-11-14 08:21:20

/images/emoticon/emoticon07.gif恭喜大大完賽,長了很多知識,謝謝您!

Chris iT邦新手 3 級 ‧ 2018-11-14 11:29:31 檢舉

謝謝你喜歡。

1
月湖 (若虛)
iT邦新手 2 級 ‧ 2018-11-15 00:59:59

恭喜完賽!感謝分享這既有趣又實用的系列文。

Chris iT邦新手 3 級 ‧ 2018-11-15 06:31:24 檢舉

很開心你會喜歡,你一次寫三個系列很厲害。

0
Summer
iT邦新手 3 級 ‧ 2018-11-15 18:18:42

恭喜完賽!/images/emoticon/emoticon42.gif

受益良多!感謝!/images/emoticon/emoticon07.gif

Chris iT邦新手 3 級 ‧ 2018-11-16 08:09:08 檢舉

很開心你會喜歡

0
阿展展展
iT邦好手 1 級 ‧ 2020-02-23 02:18:22

看到 do something 的 commit log 真的只有.....
/images/emoticon/emoticon46.gif

我要留言

立即登入留言