看板 PHP 關於我們 聯絡資訊
※ 引述《clubflymf (clubfly)》之銘言: : [註解是除了文件以外,最有效縮短了解程式的一種方法。] : 這不重要嗎? : 至少我覺得太重要了! : 不然為什麼所有的程式都有註解的功能呢? : 別把這當程浪費時間或信念問題哩! : 題外話 : tkdmaf 兄,看來您認識不少資深工程師, : 那他們有沒有告訴您或是您自己有無體會 "無法快速維護及修改的程式" 很可怕真正原因? : 原因不在於"程式架構的好壞", : 而是"懶得打掉程式太多部份重練造成的經濟或金錢損失"。 : 所以期望好的程式架構來改善損失。 : 很高興您重視程式架構, : 也期待您有好的作品。 很高興你提到了重點。 "無法快速維護及修改的程式" 原因在那? 我們寫程式往往都只著重在「預設計」、「設計」、「寫文件」、「除錯」。 而往往佔最大的地方就是「寫文件」、「除錯」。 尤其是除錯這件事。 無法快速維護及修改,是因為前手的人未提供「測試code」做處理。 你提到5000、10000行程式要靠註解才能去修改這非常非常的耗費時間。 這或許不一定是程式架構不良。 但絕對跟未提供良好的測試環境有關。 正因為沒有一個測試環境提供或告知您需要修改那一段程式。 或是bug出在什麼地方。 我們才必須用人工閱覽的方法去審閱我們的程式碼。 然而這種作法往往就是付出較高的人力以及消滅我們的腦細胞。 工程師加班,或許就是因為在靠人力來解釋程式碼的功能。 但如果我們在寫程式時,順手把測試code也寫好去對每一個功能及函式測試呢? 那我們很快就可以獲取我們要找尋的問題。 既使後來的工程師接手,也可以透過測試code所回應的各種結果知道他們所要修改的 部份或是產生的bug是在什麼地方。 這有一個「測試結果」表單您可以參考看看: http://pipirun.gotdns.com/hrc/CsTestHrc.php 他針對我寫的物件或是函式的功能進行測試結果。 當他輸出都是ok,就表示我的函式功能符合我預設的功能需求。 這個方法就叫做「測試導向」。 很多人都不明白幹嘛要那麼麻煩寫測試? 但寫測試的好處很多。 最大的優點就是:在你還沒開始設計你的功能前,先對你要的功能做測試,一但測試 你要的功能符合你的想法,你的程式也不用寫了。因為已經寫完了。 (測試的本身就等同於程式功能的實作,這種事太多程式設計師想都沒想過。) 測試code所輸出的表單就已經是一份很棒的「註解」了。 既然如此,那何必那麼麻煩還要去寫註解? 當工程師們在挑戰5000、10000行的程式時 假設每五行就是一個函式 我可能只要看1000到2000個函式表輸出。 而且還可以透過搜尋去尋找我所要找的關鍵字函式或功能。 很快的,我就可以找到我要修改的地方。 我相信還是有很多程式設計師不能明白或習慣甚至不認同測試導向。 像CMMI這種重視文件甚於程式碼的專案管理規範也不能同意測試導向。 但曾經就有一個資深工程師在被別人陷害取走所有檔案。 在沒有任何資源也不會DELPHI的情形下。 花一個星期學delphi、14天透過測試導向實作專案。 最後7天做最終總結的測試。 他在1個月的時間內做完了原本做了6個月的工作。 那個工程師就是我們敏捷開發的講師,也是我以前的同學。 當我們有了比「註解」更棒的工具時。 我們還需要去寫註解嗎? 很多人可能不相信專案真的每一件都能案時交付客戶。 甚至覺得常常就是在delay進度。 但是我這位同學,他開軟體公司七年來,還沒遲交過任何一份專案過。 其實我也不否認我除了推廣敏捷開發。 也在找人才,找一個能跟我搭擋編程的人才。 所以他必須會php,必須能夠配合作業。 要能習慣就是二個人共用一台電腦來開發專案。 很多人聽起來不可思議?寫程式不是應該各司其職? 怎麼會二個人共同寫一個程式?這不是浪費人力又浪費時間? 這些疑問,我期望各位去翻翻敏捷開發和極致編程。 裡頭就有提到搭擋編程的重要性。 就如同有人說我對安全性的概念可能還不夠強。 說真的我一點都不care! 因為搭檔編程正是將二個人互相擅長的地方結合而能做到互相學習。 而且我們只是會不斷的找資料、買書去補強所欠缺的能力。 但是程式的結構一但不佳,所帶來的毀滅性有時比安全性造成的問題更可怕。 甚至就因為這結構不佳造成安全性的問題也說不一定。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.43.158.77
flamerecca:我想問一下 你們一份code的生命週期多久? 02/11 16:30
tkdmaf:維護成本大致是一年成長0.1倍(也就是增加1.1倍)以內! 02/11 16:48
tkdmaf:敏捷開發:高穩定、低除錯、低維護成本。這是宗旨及要求。 02/11 16:49
tkdmaf:所以你要問生命週期大概就是用到軟體被淘汰換新技術為止吧 02/11 16:51
tkdmaf:反正絕對不是用個三、五年就無法再維護。 02/11 16:51
tkdmaf:以上是我同學那邊能保證做到的。不是我。我還在跟他學。 02/11 16:52
terrybob:看了tkdmaf的文章,學了很多,感謝!~ 02/11 17:00
flamerecca:既然設定週期超過3 5年 那不就要考慮別人幫你維護的可 02/11 17:11
flamerecca:能性嗎? 02/11 17:11
tkdmaf:所以在交付成品的同時,也會交付測試CODE。 02/11 17:26
tkdmaf:測試CODE就是一份很好的維護工具! 02/11 17:26
tkdmaf:同時對於他公司開發的程式,他也提供品質顧問。 02/11 17:28
flamerecca:那有沒有考慮到 有一天新增功能的時候 取用你們寫的變 02/11 17:31
flamerecca:數的可能性呢? 02/11 17:31
flamerecca:這個取用的人可能不是你們兩個 甚至沒有IDE 02/11 17:33
flamerecca:而且這個人因此得自己寫test去跑他新增的功能 02/11 17:36
tkdmaf:那就是工程師本身的問題。不行處理就請客戶回來找我們。 02/11 17:42
tkdmaf:反正我同學的公司對軟體是採「終身保固制」! 02/11 17:44
flamerecca:XDDDDDDDD 02/11 17:45
tkdmaf:http://www.hurricanesoft.com.tw/ 02/11 17:50
tkdmaf:仔細看他有一項:未完工專案直接賠償「這個倍數」簽約金 02/11 17:52
clubflymf:終身保固的程式?! @@ 好樣的... 02/11 18:05
bobju:嗯,看來這玩意或許真有搞頭. :) 02/11 18:13
tedcat:終身保固,要看軟體code有沒有買斷,這個就各公司有各作法 02/13 15:02
Thompson:那"測試CODE"要如何除錯? 另一個"測試CODE"? 03/14 19:33