Board logo

標題: 關於 請養成良好的寫程式習慣 結帖 [打印本頁]

作者: white5168    時間: 2012-5-8 10:02     標題: 請養成良好的寫程式習慣

本帖最後由 white5168 於 2012-5-8 10:16 編輯

我在這裡提出個人在最近觀察後的建言,如有不中意聽或有得罪的話請個位大大多多包涵,無非也希望讓這個討論區好

我覺得不管是寫得多少年程式或是版主,超級版主等等,都應該有必要在程式是中加上應有說明與良好的習慣才是
剛開始投身於程式工程師時也是跌跌撞撞,從一個只會胡亂命名,甚至只會將所有功能寫在同一個函數中的毛頭小子
慢慢變成會要求下屬寫程式要有模組化函數名稱與變數名稱要定義為有意義的名字
並且告誡他們寫程式不是寫給自己看的爽就好,也要能讓後面維護程式碼的人可以快速了解當初寫程式的想法及思路
至於要在程式中加入註解,剛開始也是很不能適應為何一定要在程式裡加上說明,但久而久之習慣了,沒加反而不習慣
因為哪一天自己需要再回過頭來看的時候,就可以很快就能回憶上手,才不會再花時間去回想當初的想法

各位寫小程式時可能比較沒有感覺,可是像我們在寫大型程式,一次都幾百萬行在看的時候,加上註解與明確的定義就真的很重要
因為一旦要debug時,真的會很想死,尤其是像這樣幾百萬行的程式通常不會只有一個人寫,一定是4~5個人以上甚至更多人寫,如果加上每個人風格都不同時那更是痛苦萬分
所以文字的表達就更顯重要,若是函數,變數,註解與log沒有加完整甚至不明確的話,那這樣更是會想打人,光是看那幾百萬行的程式碼時,眼睛就會有那種"脫窗"的感覺

因此在此誠心的建議各版版主們應該好好思考一下,各討論版在程式碼上的是否應該要求版友們在寫程式的習慣,以讓此討論區越來越更有看頭與成長茁壯
不過我相信版主們會認為,要要求版友做到這樣實在有困難,可是如果現在有些事不做以後會更困難更後悔
"不要為失敗找藉口,要為成功找方法",這是很多人說過的話

個人的建議,
對於寫程式已久的人,是否應該思考的該如何寫得讓人家看得懂的程式,而非寫給自己看的爽的程式,
對於剛開始接觸新程式語言的新人,更應該學習養成良好的寫程式習慣,這樣哪天回頭來複習的時候可以更清楚當初的思路
要將程式碼貼上的同時,請先了解完整個思路,有的程式碼是網路上搜尋找到貼上的,真的很希望各位版友在放置程式碼的同時也應該去理解他,不要淪為只會做複製貼上的大學生

模組化:將有意義的功能包成一個個明確且可重複使用的函數,以建立屬於"麻辣家族討論版版"的函數庫,如建立Library
我覺得在"麻辣家族討論版版"中有很多不錯使用且具重複性的資源可以整合成讓使用者使用的Library,只是在想為什麼版主沒有這樣的觀念及想法

函數與變數的命名:我看了很多人回應的程式碼,甚至各個討論版得版主所回應的程式碼,在程式碼中很多的變數常常寫x, y, k等等,不具任何意義名稱的變數
而在工作上我會要求下屬們,函數命名一定要式一個動詞接一定名詞,如取得股票股價,命名的函數就會是GetStockPrice()或ReadStockPrice()

說了這麼多,無非也是希望各位大大們能了解,不管是寫了程式多少年,沒有一個好的習慣養成,這樣程式的可讀性真的很低
為了這個討論區好請各位大大認真思考以上所說的內容
以上的言論如有冒犯的地方請多多包涵
作者: oobird    時間: 2012-5-8 11:00

不錯的想法,可惜大家的時間有限,要持之以�痟N難了。
看來你是做事很嚴謹的一個人,但無法要求每個人像你一樣嚴謹的。
vba在excel中只是一個輔助的小工具,要如何看待如何處理則見仁見智啦!
幾百萬行的程式要從小寫到老,應該無法在討論區討論,而且一般人也沒這種超級電腦可以跑的。
作者: white5168    時間: 2012-5-8 11:11

如果像版大所說的
那建議從版主做起.彼此在相互監督
作者: Hsieh    時間: 2012-5-8 11:52

回復 3# white5168
    在討論區中,要找到像閣下如此用心在學習與討論的人,不是沒有但為數不多
來討論區大部分的人是撿現成,找人代工,根本不在乎程式的結構與邏輯的探討
VBA是一個高階語言,很多函數都已經在函式庫中,只是使用者沒去發掘與應用
他不像C語言或VB等低階語言,還需要自己寫一堆函數甚至物件類別模組
從過去的討論中,不難發現一個現象,資料操作的方法不外乎那幾項
每次的方法都是相同,只是資料位置或型態稍微改變,又是一個問題出現了
這純粹是使用者沒有去思考的原因
註解是良好的習慣沒錯,可以幫助日後程式的維護
不過,這是要自己確實了解程式邏輯去註解,日後自己才會知道
相信您也會看到GBKEE版主通常會在回復時加註解
這對於好學如你的人,當然受用無窮,但是往往這類問題仍然產生
最後還是感謝您對論壇的支持與關心
至於您提到的問題,那就看解答者是否有這個時間去加註
至於模組化一事,前面已經提到,內建函數很多,至於一些技巧性的也會整理成值得關注或置頂連結
當然這需要人手,希望有這份熱忱的朋友能夠加入版主行列,來為版務盡一份心力!!
作者: GBKEE    時間: 2012-5-8 13:40

回復 1# white5168
你的建議很好 接受了.  但誠如 oobrid 超版 所說 vba在excel中只是一個輔助的小工具
線上回答都是一些小程式的問題, 並非是在寫一個應用程式, 不會有如你所說會有百萬行的程式碼.
作者: am0251    時間: 2012-5-9 13:50

  1. vba在excel中只是一個輔助的小工具
複製代碼
可惜~~~小弟學了好一陣子,還是摸不着頭腦.......@_@"
作者: bruse    時間: 2012-5-15 08:45

vba在excel確實是一個輔助工具,但卻也是舉足輕重的角色!
在講求資料倉儲的時代,資料格式是固定的,但是使用者分析的角度卻永遠在改變。
此時Excel - VBA的功能就很好用了,不但可以很容易的連接資料庫,也可以針對使用者的需求做相當多的變化。敝公司都常用Excel - VBA產出客戶用報表,經濟又實惠!
但也因為如此,幾千幾百行的vba程式並不少見~~此時適當的註解就很重要了
千萬不要小看VBA啊 ~~~
作者: oobird    時間: 2012-5-15 09:16

一個數千行的過程,執行時EXCEL通常會告訴你"過程太大"而中斷。
當你須要撰寫一個複雜龐大的過程時,最好把處理的過程分門別類成幾個子過程調用
讓這些子單獨負責一個工作,這樣一看就知是執行什麼。
個人覺得程式碼要乾淨清爽可讀性才會高。
首先得剔除多餘的代碼與敘述。
若加上一堆註解會看得眼花瞭亂
程式碼的縮排會很方便閱讀
讓每個循環自成一組,FOR 對齊 NEXT  ,IF 對齊 END IF
在多層套坎時可以立刻看出層次來,這樣才是可讀性高與方便維持的書寫方式。
作者: hugh0620    時間: 2012-5-16 10:52

大大的想法跟建議~ 真的很不錯~
版大們的回覆也都很貼切~

若有註解是能更增加想要了解的人~ 來吸收這些要傳承的知識~
但版大們說的是很符合事實~ 很多人的需求只是要結果~ 不太會深入的探討~

主要的癥結點在:[學習者的態度]
學習者若永遠只想要只得到結果~ 不下苦功的學會應用~
版大們再多努力的註解及程式層次分明也是枉然~

反之~ 個人之前也發表過提問的方式~ 是學習者要加強的地方~
很多發問者~ 提的問題都不清楚到底要什麼(個人初期也是一樣)~ 讓版大們也很困擾~
提升提問的品質~  回答問題的品質也會相對的提升~

若真的想學習的人~ 不太會在乎版大們是否有註解~
因為不懂就會再發文~ 請版大或大大們指導~
作者: alexlkklin    時間: 2012-5-16 11:23

這個小的身受其害,
因為小的學的不正統,
往往程式克出來就有點"長度",
程式執行結果雖然差強人意的可以接受,
但是一出問題就要查半天,
所以這個真的很重要,
希望在這裡可以吸收到更多更好的想法
作者: zcxzcxz    時間: 2012-5-16 17:52

學到現在我還是常會有不懂的地方....個人邏輯概念不強...><
來這問,有時真的是求一時之快,在自我要求研讀的部分依然不夠用心...
當然也是會常看一下別人發問的問題,在問自已懂哪些部分...
仍需努力中!!
作者: alumi    時間: 2012-5-17 13:46

本帖最後由 alumi 於 2012-5-17 21:37 編輯

個人曾看過大陸有人, 把一家公司的進銷存系統, 用整個 Excel VBA + SQL Server ,完整呈現出來.
確實是有必要去注意一些小細節.
VBA 雖然方便, 但程式編寫不能隨便, 尤其是 變數未經宣告, 拿了就用,
小程式, 看不出來有何關係, 但程式碼超過上千行時, Debug 會是一件比寫程式還大的工程.

作者: ts586    時間: 2012-5-24 14:08

樓主想法不錯,寫程式固然要加註解
不過有時候程式太複雜,註解不太夠用
作者: thps51134    時間: 2012-5-25 11:24

如果可以的話我還希望哪位可以指點一下寫註解的秘訣...

我自己因為太習慣寫註解了
常常搞得自己的VBA一打開是一片綠
雖然說不太會有"看了這行不知道在做什麼的問題"
不過要找某個區塊時常常很眼花...Orz
作者: cdkee    時間: 2012-5-26 00:32

回復 1# white5168


    大大說的正是!有了註解,真的提高了學習心態。小的可能因初認識VBA,覺得有很大用途與幫助。
版大說的也說穿了,小的也曾經只是來找答案,不理什麼,只要做到效果就得。
但見大大和版大們,不斷的無私教授和指導,且在程式中再加入註解,令初接觸VBA的,明白程式碼的用意,之後自己也可以嘗試修改。如果沒有那些註解,可能只會收下來便算了,不會進一步了解程式碼的用法。
作者: HUNGCHILIN    時間: 2012-5-26 01:17

要求下屬寫程式要有模組化函數名稱與變數名稱要定義為有意義的名字, 並且告誡他們寫程式不是寫給自己看的爽就好,也要能讓後面維護程式碼的人可以快速了解當初寫程式的想法及思路

在裁員的時候,上述較不符合人性面。

是個想法,再版內我的註解可能是寫的最少的,晚上回到家都已經很晚了,時間並不多,且能力是真的有限,希望有其他有意願成為版主的夥伴,能多加支援
作者: a8350070    時間: 2012-5-27 00:40

每個人的領悟能力不同,對於一點就通,能舉一反三的朋友,如果解釋得太清楚不僅多此一舉,恐亦有小看他人之嫌;而對於只想撿現成品來用而不求甚解的人(就像小弟),花太多時間去註解只怕是拿熱臉去貼人
個人的原則是:除非發問的朋友有提出說明的需求,否則是很少會解釋的,因為表達能力不好,又深怕誤人子弟
作者: oobird    時間: 2012-5-27 09:36

回覆時加上註解,無異是增加勞動量與時間的支出
你真正有須求,須要了解哪一段時再要求註解哪一段就好,別人的時間跟你一樣也是很寶貴的。
學習是要實踐而不是用讀,對岸有位朋友2006年開始就要求回覆要加上註解他才能看懂,至今5、6 年過了他還是要求註解,最基本的改變作用位置都還不會。大家這麼辛苦寫註解對他毫無幫助。
所以,加註解或用長長的一串文字來作變量是不是良好的習慣?見仁見智,看法各自不同,此帖並無討論價值,可以結帖了。
作者: white5168    時間: 2012-5-27 14:10     標題: 關於 請養成良好的寫程式習慣 結帖

感謝版主的指教,我認同版主所說部分的內容,畢竟一個政策的執行不能只是單看單一個案,而去否決他人所提的意見,更重要的要多去了解大眾想求知的慾望,
就像小孩子,從小就要教他尊重他人所說的話與意見,而不是一昧教他要先去否決他人,這樣未來他長大的同時,將會變成一個不管任他人有任何意見就只會否決的人
寫程式是否要加註解端看個人,畢竟有人想學有人不想學,想學的人想要知道更多的話,就應該有讓他有知的權利,版主應該將思維放在如何提升討論版的素質上,而非去評斷他人所發表的文章內容是否有價值
畢竟就是因為有必要才會發表出來,如果每個人都是認為有價值的才發表,沒價值得就應該結帖的話,那真的是阻礙進步與成長的元兇
一個實驗成不成功,不能只端看實驗結果,如果有好的結果就表示成功的話,那這樣錯誤不就不會發生了,可是科學是靠每一次不斷的失敗與努力才有的結果,從失敗中記取教訓,所以失敗也是一個好的成功實驗,如果只單看一個案例是不準確
建議版主應該想遠一點,而非只限於此眼前的評論
我們不能祈求每個人都一定要去實踐,但我們能做的是如何努力去改變大家寫程式的習慣與矯正風氣,而不是一昧的打擊
我相信每個人的出法點都是好的(當然以包括每位版主),如果以上的說法令各位不舒服,再請各位多多包涵,我並非要引起爭論只想請版主多思考,畢竟大家都是正面的出發點,不應該就此結帖
作者: oobird    時間: 2012-5-27 16:23

就是因為有尊重你的意見,才會讓你的帖子在公說公有理婆說婆有理的情況下糾葛了許多樓層。
論場首重知識的探討與問題的解決,實在沒必要在要不要註解上辯論,這樣的辯論對提升論場品質並無助益。好學者自會按F1取得更多的說明與範例,不想學的有註解也看過就忘了,前面也說過,真正有須要可對有問題的部份要求解釋,全文的註釋可以免了。閣下若覺得自己的想法正確,想回覆時都加註解,建議從自己做起,讓他人起而效尤。若大家覺得不錯自會跟進。更不必因此批判怎樣才是良好的習慣!
這類純屬個人偏好的辯博在學術論場上出現會讓大家感到不快,請避免繼續這類糾葛。
我們在論場上發表的每一個字都須要管理者花時間與金錢去維護,論場空間是珍貴的,儘量保留給須要的朋友使用,本帖暫保留24小時吧!
作者: jago    時間: 2012-5-29 11:21

我自己也深受其害阿..自己很久以前寫的程式,結果沒加註解,

要拿來修改時....花了不少時間




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)