查看完整版本: 如何寫出讓別人好維護合修改的程式?
頁: 1 [2] 3

evondead 發表於 2014-12-18 10:25 PM

名稱最好寫成亂七八糟,前不搭後的。全部不要寫註解。
這樣後面的人無法接手,怎能顯現你的偉大,.<div></div>

yuruchen 發表於 2015-3-21 09:55 PM

有本書叫 重構
有興趣也可以看看
基本上, 第一版的程式可讀性最高, 或是說 程式碼的亂度最低
等到程式維護久了, 經過多次的功能 新增 刪除 修改
就需要重構了

w12463 發表於 2015-6-29 10:20 AM

簡單來說  命名有規則
註解要詳細
比如說寫一段使輸入資料有限制  不只是要寫限制輸入說明 還要附上說為什麼要做該限制

jackie520520 發表於 2015-7-1 11:02 PM

1. 註解.
2. 模組化.
3. 除錯Log.

tw_bt0059 發表於 2015-10-7 01:10 AM

看看這本  "The Art of Readable Code"
多多少少也會有幫助。   程式也會好讀很多,像作文一樣,利人利己,何樂而不為呢。<br><br><br><br><br><div></div>

cwchiu 發表於 2015-10-8 10:39 AM

程式撰寫規範要規定好
註解規則也要寫, 特別是什麼情況會丟錯誤/例外
如果函數命名的夠好, 註解是可以簡短

shockliu 發表於 2015-10-11 04:13 PM

從先寫好 document 和 flow char 開始

軟工這種東西是閱讀閱有味道

o887720 發表於 2015-11-26 10:33 PM

當然是註解囉...
然後設定變數的時候要有一定的系統
不要想到就隨便設個 x  y
看程式的人真的會哭哭{:38:}

web5000.10 發表於 2015-12-25 10:37 AM

最主要是註解跟命名方式,命名方式千萬不要用某變數加數字或加個英文,這樣要找很難找,註解寫的好也是很重要的一部分喔

chevylin0802 發表於 2015-12-25 05:27 PM

本帖最後由 chevylin0802 於 2015-12-25 06:09 PM 編輯

b9944115 發表於 2014-12-18 10:22 PM
我覺得真的真的一定要加註解...
而且最好在每一個Function前面都要寫上註解
然後不要覺得維護的人是天才, ...

注解不是百分之百的辦法
很多人的注解有寫跟沒寫一樣
注解過多更容易干擾讀code的整體性
就跟新聞畫面一樣
上下左右都放一堆字
還在底下放跑馬燈
干擾太嚴重時
很容易變得很難理解
一隻程式就算三行注解
也不見得就不好
常常是許多人亂注解一通
那還寧可不要那堆注解

過多的階層往往才是讓人看不懂的
有些人把一整個{}內的東西
花了好幾百行包起來
這種的寫法才真正是垃圾級
不懂得利用更好的程式架構
當然超級難看懂

一目了然的程式
即使完全沒有注解
也能輕易看懂
那才是真正好的寫法
只是能做到這樣子的這種人太少
簡潔才是重要的
寧可多寫一堆函式
也不要一堆又臭又長的程式碼

你們很多人都還很喜歡用IDE
我都還常常在用console模式的vi
Vi還只是很單純的文字編輯器
沒有任何可以輔助的顏色變化
也沒有圖型化的框框可以框住{}
不像你們還用IDE的輔助
還不是照樣做
只是
常常看到很多台灣人寫的code之後
真的無言
尤其還有好幾個是留美博士
比微軟的暈到死作業系統
還暈倒
不是看不懂他們寫的程式
而是很想直接叫他們重寫
很多人花一個星期寫的程式
真的慘不忍睹
完全沒有架構性
一個android app
需要換七八個頁面
居然給我弄出七八個Activity
他們花了三個月搞出來的東西
看樣子做出來的東西真的沒有人能替他們debug
還得靠我幫他們擦屁股
花了一整個星期重寫成fragment
碰到這種RD
真的無言
只是像學生搞出來的程式
會動就好
而不是管有沒有延伸性與架構性
如果不是他們找不到bug在哪裡
我還從沒看過他們的程式碼...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>

jehovahcloud 發表於 2015-12-27 08:25 PM

先找幾本在講怎麼寫出好懂程式的書,都讀過一遍後,再做心得整理。
接著是著以自己的理解將程式碼寫好然後再把程式碼丟出來找人討論,我自己是一路這樣練過來的,每種語言的不同特性造可以造就不同的寫法,這真的就是慢慢練,然後找你想要合作的對象練習吧。
{:54:}

行過沒碰到 發表於 2016-1-1 07:40 PM

到網上搜尋一下程式碼的Standard或Good Practice吧,比如說,命名方面已經很重要,程式碼的Class一般是這樣名命的MyProgramClass (全部英文詞語以大寫開首,然後全併在一起),Function一般是這樣: getObjectName (除了第一個英文詞語是全小寫,其他全部英文詞語以大寫開首,然後全併在一起),CSS 的 Class 一般是這樣 website-header-title (全部英文詞語都是小寫,之間以-作區分)

當然我都只是懂其中一些規則,還在學習當中,歡迎大家也指點一下...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

dh3014 發表於 2016-1-4 12:49 AM

Design pattern, coding style等等,都是一些有用的工具,但也不是只是應用這些工具就會讓你的程式碼變得好維護,事實上不當的工具應用讓程式碼更難以閱讀、維護的場合十分常見。

好維護的專案其實就像一篇好的作文一樣,簡單易懂但又不失優雅大方。

我個人是很推薦稍微去學習一下「中學程度的英文作文」,當你已經熟練於如何寫出所要求的功能與效能後,追求「可維護性」的第一步其實就是「可閱讀性」,也就是說你要考慮的是如何寫出「人」易讀的程式碼,其實就是作文了。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

chevylin0802 發表於 2016-1-4 05:36 PM

本帖最後由 chevylin0802 於 2016-1-4 05:55 PM 編輯

行過沒碰到 發表於 2016-1-1 07:40 PM static/image/common/back.gif
到網上搜尋一下程式碼的Standard或Good Practice吧,比如說,命名方面已經很重要,程式碼的Class一般是這樣 ...
不同的程式語言有不同的寫法與規則
不可以一以概之

比如JAVA就有JAVA自己的習慣寫法
C++會比較亂一點
不同的人有不同的習慣

但是
真正純C的工作者從不把實體函數大寫
Linux kernel 裏面的程式碼就是如此

你很難看到正式的Linux drvier實體函數命名會採用大寫開首的
因為那不是C的習慣
任何一個全大寫的C函數必然是透過#define去定義出來的
所以像我們在看別人的程式碼
只要看到有人把C的函式大小寫混用
就知道那個人一定是半吊子一個
或者是只在微軟系統下工作的人
因為傳統的C
有它傳統的習慣用法
而這個習慣用法絕對不會是做微軟系統應用出身的

其實也不需要講得太多
光光我們講標準的C程式庫就好了
libc的函數從來就沒有大小寫混在一起的函數

只有C++才會採取大小寫混合的命名方式
而且也未必所有的C++程式都會去搞大小寫混合

像 { } 的書寫樣式
也有不同
許多人的 {  } 會把它獨立成單一一行
但是傳統的C則不是如此
傳統的C 用的是
while(....) {
.........
}

for(...) {
.......
}

if(...) {
.........
} else {
......
}

而且如果 { } 內只有單行的時候通常都會把 { } 省略

但是C++/JAVA往往會把 { 寫到下一行去

對我來講
從198x年就開始在玩C語言的人
就完全不喜歡現在這種C++/JAVA寫的風格
因為{ } 這種符號在debug的時候根本不會成為breakpoint
把那些符號獨立成單一一行
只會讓整個本來可以很連續去讀的程式碼卻要不斷的靠往下拉來看
這就很討人厭了
當然我也知道很多人採取這個方式是因為{ } 往往寫得很多階層的關係
為了分辨清楚階層他們需要用這個方式做
但是相對的問題就是
原本{ } 內的內容有機會可以整在同一頁的
卻往往被硬生生的分成兩頁才讀得完


...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

kwj 發表於 2016-1-5 12:18 AM

有很多 coding style 的習慣,其實是基於當時的 IDE 特性去設計的
例如樓上 chevylin0802 大提到的 { } 要不要換行的問題
會產生同一頁或分成兩頁的差別,是在於 chevylin0802 大用了 vi 編輯器
但如果是用 Notepad++ 或者其他視窗型的 IDE,在有捲軸的情況下其實不會特別關注這個問題

同樣的,像是全域變數有些語言會有習慣加底線,或者全大寫等等的
本來的目的在於快速了解哪個變數的 scope 在哪裡
但在有使用特定 IDE 的情況下,這些變數會自動被換顏色,本來就是一目了然了
這種狀況下去堅持要不要底線、要不要大寫等等,其實意義並不是太大了。

最終最重要的,其實還是跟團隊中的其他人是不是有共通或類似的 IDE 使用習慣
如果大家都用相同或類似的 IDE,有時不見得需要去執著於多年以前大神們建議的程式碼格式
畢竟有很多建議源自的問題,都在經年累月間慢慢被解決了。...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><br><br><br><br><br><div></div>
頁: 1 [2] 3