看板 Programming 關於我們 聯絡資訊
※ 引述《adrianshum (Alien)》之銘言: : 其實, 往往要寫一千字去解釋, 我覺得那不算真的高手. : 我一向的目標都是要把程式寫得 self-descriptive, 要 : 別人不看 comment 也看得懂. : comment 就留在偶然為了效率寫得難明, 或有特別東西要 : 別人留意的時候才用吧. : (還在磨練中) 同意,還要寫註解那就代表程式碼本身描述力不足。 「程式可讀性」有個很經典的例子 XD 假設有一個 Date 類別,請問建構函數要怎麼設計? Date date1 = Jan(12, 2008) ; Date date2 = Feb( 9, 2009) ; 忘記在哪邊看到的了... XD -- To iterate is human, to recurse, divine. 遞迴只應天上有, 凡人該當用迴圈.   L. Peter Deutsch -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.160.254.105
adrianshum:這個... 是反面教材嗎?... 202.155.236.82 08/21 18:18
ykjiang:這個例子很正面,程式本身就很具描述性 61.59.85.180 08/21 19:54
tinlans:黑書前兩章的地方有提過。118.160.106.184 08/21 20:19
chessjim:很不錯,只是要定義較複雜的語意就難摟 59.113.69.129 08/21 21:20
ykjiang:好的介面設計就是讓人一看用例就懂, 61.59.85.180 08/21 21:25
ykjiang:並且不容易忘記,因為是如此的自然 :) 61.59.85.180 08/21 21:26
ykjiang:這時如果再加註解,那就顯得多餘了 61.59.85.180 08/21 21:26
wa120:我反而不喜歡這樣設計這個Date Object 140.133.9.148 08/22 04:24
wa120:Date的原意在日期 這樣重點(Method)跑道 140.133.9.148 08/22 04:26
wa120:月份去了 140.133.9.148 08/22 04:26
ykjiang:不會跑到月份啦,看也知道是日期 61.59.85.110 08/22 13:06
ykjiang:用高階的方式思考,不要侷限在語言 61.59.85.110 08/22 13:06
ykjiang:program into a language; 61.59.85.110 08/22 13:10
ykjiang:NOT program in a language. 61.59.85.110 08/22 13:10
ykjiang:Jan(12, 2008) 不但易懂,還防呆 61.59.85.110 08/22 13:17
tinlans:跑到月份去的話那寫 Date date = 幹嘛。 118.160.106.29 08/22 14:05
kuninaka:何必呢218.164.154.105 08/22 14:16
ykjiang:還有,月份只有 Jan ,不會有 (12, 2008) 61.59.85.110 08/22 15:27
adrianshum:你可以說我古板, 但 method 就該是動詞 202.155.236.82 08/24 14:50
adrianshum:當你看到一個叫 Jan 的 method, 那有什 202.155.236.82 08/24 14:50
adrianshum:麼好處呢?... 要防呆, 我寧願弄個enum 202.155.236.82 08/24 14:50
kuninaka:青菜蘿蔔各有喜好 218.164.144.88 08/24 17:31
adrianshum:我還是老論點: 這種違背正常設計原則的 202.155.236.82 08/25 10:43
adrianshum:創新方法, 待把程式撰寫作為工藝磨練好 202.155.236.82 08/25 10:44
adrianshum:才搞這種 "創新" 吧. 我實在不能苟同一 202.155.236.82 08/25 10:45
adrianshum:個叫 Jan 的 method, 超詭異的 202.155.236.82 08/25 10:45
adrianshum:Date d=getDate(2008, Month.JAN, 1); 202.155.236.82 08/25 10:46
adrianshum:這會比起那個寫法難讀嗎? 我覺得還比較 202.155.236.82 08/25 10:46
adrianshum:易讀, 防呆也沒分別 202.155.236.82 08/25 10:46
bobju:有些規範比較嚴格的軟體公司會限制程設師用 59.104.183.16 08/25 11:16
bobju:這類'別樹一格'的語法. 59.104.183.16 08/25 11:17
bobju:為什麼?搞得跟人家不一樣只會造成大家的困擾 59.104.183.16 08/25 11:17
bobju:.一看就懂嗎?只怕未必.因為人家還是希望有標 59.104.183.16 08/25 11:19
bobju:準文件做為參考基準.而不是讓程式自己說話. 59.104.183.16 08/25 11:19
ykjiang:to adrianshum, 你那樣寫的確也防呆, 218.167.67.14 08/25 12:09
ykjiang:看起來也很清楚,但用起來卻顯得比較累贅 218.167.67.14 08/25 12:10
ykjiang:若 Jan() 或 Date() 視為 constructor , 218.167.67.14 08/25 12:12
ykjiang:或 factory method ,就不必堅持使用動詞 218.167.67.14 08/25 12:12
ykjiang:to bobju, 不確定你說的標準文件的內含, 218.167.67.14 08/25 12:16
ykjiang:為啥該文件會跟這個用例衝突, 218.167.67.14 08/25 12:16
ykjiang:就我知道,很少程式規範到那麼細的地方 218.167.67.14 08/25 12:17
ykjiang:另外,請區分 function 及 procedure 218.167.67.14 08/25 12:19
ykjiang:procedure 命名才會建議用動詞 218.167.67.14 08/25 12:19
ykjiang:我想 adrianshum 一定把這段碼當成 JAVA, 218.167.67.14 08/25 12:25
ykjiang:剛好想到 JAVA 的 new 也很累贅... 218.167.67.14 08/25 12:26
Schelfaniel:這就是Java程設師和C++程設師的不同 163.29.29.137 08/25 17:06
bobju:to ykjiang簡單講就是不要用自創的'程式語法 59.104.183.16 08/25 23:57
bobju:寫程式.你寫的程式碼用法最好都有官方文件為 59.104.183.16 08/25 23:58
bobju:參考根據. 59.104.183.16 08/25 23:58
adrianshum:和 C++/Java 沒關吧?! method 是動詞是218.103.237.217 08/26 00:42
adrianshum:基本 OOAD 的做法吧...218.103.237.217 08/26 00:42
zerodevil:樓上看rails的document一定會看到吐血.. 220.133.186.66 08/26 01:53
zerodevil:寫起來像英文是好事啊 不一定要堅持什麼 220.133.186.66 08/26 01:56
zerodevil:OOAD的作法.. 220.133.186.66 08/26 01:56
Schelfaniel:Java寫久了自然會比較接受Java那一套 163.29.28.137 08/26 08:29
adrianshum:其實我是幹了五六年 C++ development 202.155.236.82 08/26 11:29
adrianshum:最近幾年才主力寫 Java 而已. 我說的原 202.155.236.82 08/26 11:30
adrianshum:則在 C++ 的時候已經有遵從. 我常說, 202.155.236.82 08/26 11:30
adrianshum:創新不是問題, 但待你把基本的磨練好 202.155.236.82 08/26 11:31
adrianshum:才想創新的玩法吧. 202.155.236.82 08/26 11:39
ykjiang:內文明明就說是問「建構函式」怎麼設計 218.167.67.14 08/26 13:02
ykjiang:而不是問 object methods 218.167.67.14 08/26 13:03
ykjiang:例如數學函式也都命名為 sin(), cos() 等 218.167.67.14 08/26 13:05
ykjiang:不會是 getSin(), getCos() 218.167.67.14 08/26 13:05