Re: [請益] 新手請問一小片段程式
※ 引述《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
→
02/11 16:30, , 1F
02/11 16:30, 1F
→
02/11 16:48, , 2F
02/11 16:48, 2F
→
02/11 16:49, , 3F
02/11 16:49, 3F
→
02/11 16:51, , 4F
02/11 16:51, 4F
→
02/11 16:51, , 5F
02/11 16:51, 5F
→
02/11 16:52, , 6F
02/11 16:52, 6F
推
02/11 17:00, , 7F
02/11 17:00, 7F
推
02/11 17:11, , 8F
02/11 17:11, 8F
→
02/11 17:11, , 9F
02/11 17:11, 9F
→
02/11 17:26, , 10F
02/11 17:26, 10F
→
02/11 17:26, , 11F
02/11 17:26, 11F
→
02/11 17:28, , 12F
02/11 17:28, 12F
推
02/11 17:31, , 13F
02/11 17:31, 13F
→
02/11 17:31, , 14F
02/11 17:31, 14F
→
02/11 17:33, , 15F
02/11 17:33, 15F
推
02/11 17:36, , 16F
02/11 17:36, 16F
→
02/11 17:42, , 17F
02/11 17:42, 17F
→
02/11 17:44, , 18F
02/11 17:44, 18F
→
02/11 17:45, , 19F
02/11 17:45, 19F
→
02/11 17:50, , 20F
02/11 17:50, 20F
→
02/11 17:52, , 21F
02/11 17:52, 21F
→
02/11 18:05, , 22F
02/11 18:05, 22F
推
02/11 18:13, , 23F
02/11 18:13, 23F
推
02/13 15:02, , 24F
02/13 15:02, 24F
→
03/14 19:33, , 25F
03/14 19:33, 25F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章