看板 Soft_Job 關於我們 聯絡資訊
※ 引述《pennymarkfox (潘妮小狐狸)》之銘言: : 這幾天發覺有個同事對code generator跟code review很不以為然(理由我大概猜的 : 出來不過這不是重點) : 在版上好像沒有看到相關的討論,其實我好像有映像但是鬼遮眼的找不著(默) : 我的認知是,code generator是幫你助完成實作的工具,它應該是幫忙你減少實 : 作一些刻版的程式碼的時間。 我通常不是用到Code Gen的人,而是需要寫Code Gen給別人用的人。 Code Generator通常只有一個目的: Make Common Case Faster. 可以加快的就加快,不能快的就不要想太多,Code Generator的目的不是用來取代 programming,只是用來帶過那些目標語言力有未逮而討人厭的部份(例如Java的 Getter/Setter)。 另外,到底誰那麼了不起可以對Code Review 不以為然啊? 做數學證明與物理模型的都需要一大堆的同儕審查了,他是有多了不起阿? 完全不需要Code Review的程式就是不重要所以可以寫過即丟的程式,一個開發者會 很喜歡寫免洗程式嗎?(『不需要』跟『沒有被』是差很多的。) 我今天一個下午就是在修一個兩年前離職的同事寫的一段程式碼,他因為某些原因 呼叫了一個4年前就被Eclipse官方Deprecated掉的API。 這段程式碼的測試很不幸的與Server-Client端的Protocal狀態有關,我得要花更多 的時間將那個狀態複製出來才能確定我的修改是對的。 這一切如果在兩年前我或是我主管有好好做Code Review的話就不會有今天的浪費了。 而一間軟體公司一旦開始開發產品、累積程式碼,就會因為該做的沒做而累積這樣的 債務。 當累積的設計弱點、架構複雜度大到頃全開發團隊之力在資金燒光前都無法修正時, 那就是該產品熱力學第二運動定律的終點了。 也就是軟體在架構設計上的『死亡』。 : 他覺得"code generator 間接的宣告程式「設計不重要」",因為 : 一段程式不用大腦想就可以寫出來, 就不用設計了. 如果有個工具讓你不用大腦 : 想就可以寫程式, 那不就是間接的告訴你不用設計, 就是間接的告訴你設計不重要 : 當我說出上面code generator應該是當成工具來減少開發時間的想法,他說 : 實作從來不是寫程式裡面花時間的部份 : well, 所以我寫程式很花時間是因為我不會寫程式嘛 T_T : 其實我自已在開發的時間的確是設計多過實作,但debug又多過於實作。 : 不知道版上的高手對於code generator的看法又是怎麼樣的呢? 作人不要鐵齒,有些東西,你不用Code Generator,你就真的很笨。 出個題目: 請用Java簡單實做一個可以讀取S-Expression的 Lisp Interpreter。 你去問看看除了做IDE的有誰會拒絕用Antlr所提供的Grammar DSL與Code Gen tool, 一定得要自己手工用Java刻 Tokenizer與 Syntax Parser。 -- 我所信仰的科學是一種謙卑的理性,承認自身的無知與渺小才能觀察到世界在我們貧 弱的知覺上留下來的痕跡。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.44.37
Ting1024:是阿。該不會寫韌體的吧,寫小玩具還自以為是。 10/15 21:56
Ting1024:寫AP的,你用MFC不產生樣本,自找苦吃阿。 10/15 21:56
a1e:跟手工刻gui介面一樣,第一次做很好玩,做多了覺的很麻煩Orz 10/15 22:35
TonyQ: antlr 這例子真的是個經典 XDD 10/16 00:06
a1234957:通常軟體跟韌體的思維完全不一樣 10/16 00:14
pennymarkfox:是做web application... 10/16 01:32
pennymarkfox:code review那部份我不確定他反對的原因 10/16 01:34
pennymarkfox:我跟他是同個team但不同語言, 他java我c# 10/16 01:34
brianhsu:Code generator 或許有諍議,不過 code review 會反對就 10/16 08:52
brianhsu:真的很奇怪了……@_@ 10/16 08:52
dryman:Lisp interpreter讚XD 10/16 17:01
wildpeanut:推! 10/16 19:00
ykjiang:我們部門寫韌體的,我及同事都有寫code generator給大家用 10/17 00:09
juriolegend:code generator外還有custom script讓大家學習使用XD 10/17 01:54