2016年11月24日 星期四

寫程式的好習慣

總之就是多加註解了,其實上班以後,如果您有做案子的話,通常都一個案子好幾萬行,想想各個地方都是不同的想法,要是忙起來又接兩三個案子,來回不同的切換,就算您是功力很深厚的,怎麼可能都記的住,

也就是所謂的註解可能記不住,不註解更不可能記住

其實註解也是一門學問的,學問的意思不是說您要註解的很深奧或很文言,他其實傾向直接明白,您當時想什麼,有什麼特別構想或者是為什麼要那樣設計,就直白的寫上去,通常在註解時不要太多專業名詞,除非您是給做很久的人看的,他對專業名詞有基本認識,
想想如果您是初學者,我設計一個模組是用來搭架構的,例如底層建置好,您只要繼承我這個class的某個virtual function,他就會自動的在執行緒執行,

想想我這段話,要是看的人不知道執行緒是什麼,那是不是就卡住了?

就算您知道執行緒是什麼,我用一個專業名詞virtual function,沒學過AOOP的是不是又卡住了?
跟您說他會自動執行,我沒給範例,您怎麼知道真的他會在執行緒自動執行?
要是我再把這個class包成lib並把.cpp藏起來,您真的知道怎麼用嗎?
想想每碰到一個地方都是一個關卡,要是我註釋再改成英文,英文不好的不就又死了?

又或者是其實在公司上班,假設這是一個個人的東西,結果我懶或者是為了保密,根本沒加註釋,那是不是每個人都要來問我才會使用呢?
所以您看完這段會了解到,其實如果您想要快速的成長或者是有一群相同向前的同伴(要確保大家都很努力拉,當然也是要賺到錢),並且以最快速度上手並完成案子,

其實到最後很多東西是解密的,就是lib附.cpp,並提供看得懂的註釋,有時間要提供該模組的範例程式,並且有實際應用的案子可以給人參考,甚至,人家來問時,通常有時候我們會做一些拖拖拉拉的回應,為了拖人家時間或者是讓人家知難而退,故意不教人家,這也是不行的,要求效率要以最直白的方式,讓人家上手

這些就是所謂的好習慣

寫Code是一件很累的是,一個經典的function您要靠自己想出來,可能要一兩年一直修改,還是都有可能失敗做不完整,

想想一個大型案子(除非您做小的案子,但是往往小的案子不賺錢),通常要數10個經典算法或者是好的設計才做得出來,

您卡別人人家再卡您,案子是做不好的,但其實如果您是該環境的技術上游0.0有時候還是要保護自己,避免東西被人家挖走
總之,我們還是維持人性本善,通常東西只要用出來,您最好不要有再藏起來的想法,因為會發生我前面描述的那些,導致大家效率不好,團隊不賺錢,您怎麼拿到比較多的錢呢?

這是基本想法,當然一些技術領先還是要藏起來啦@@,不然就您的案子有用,其他案子都不要開發相關題目,這樣也是可以,但是往往不同案子會有相同的需求,其實藏不住的,

而且其實一般趕案子,一些模組不可能完整或者是沒有Bug,保密到最後只會讓大家陷入負向循環(除非您已經不想向前衝了,不然負向循環是一件很可怕的事)

例如您藏程式碼,人家用到來問您,結果您花額外時間回答很多人相同問題,結果您也有案子壓力,一急做不好,做不好東西有問題,人家又找您協助,你會發現一直窮忙,很糟糕的

所以第一件事,仔細評估要拿多少東西出來,可以讓環境有正向成長,通常講這樣就是全部拿出來拉,不想拿不如就不要使用,不要找其他人跟您一起偕同做事
這算是一個好習慣

再者我們寫東西時要把可以reuse的東西模組化,讓他可以重複使用,也就是您花一年的努力的成果,下一個人使用可能花5分鐘就可以達到相同效果,這樣團隊獲利才會比較快速

另外我們設計東西時,要規劃後面可能要做的事情…幹,有蟑螂,租到蟑螂屋…哭哭

總之就是設計的任何東西要有預先保留擴展的可能,例如您拉一個參數窗口,總不能拉的小小的,並且您的頁面剛剛好擺滿,要使用的參數,通常會建置一些分頁(例如PageControl),將參數分群在不同頁面,讓往後您需要新增參數時,可以有地方放,這也是要注意的

不只這個,例如您新增光源模組,您要考慮未來是否會有多組光源要控制,如果會有的話,記得模組化您的光源程式控制片段,並且使用一些可以調整組數的結構,例如使用vector,這樣往後要多幾組有可花比較小的力氣做新增,

您沒做上面這些準備當然沒關係,但是往往您下次要修改時,您可能要花很多倍的時間,寫這個功能,其實多做一點設計和準備是好事,儘管您目前交件時沒用到

註解,模組化,不要太摳,預留備載以利往後修改,總之最重要的就是,做事直接明白一點,不夠直白,喜歡拐彎抹角,往往您寫出來的東西,也會拐彎抹角,Code人家不好接手,您藏一個提示,對其他接手維護的人會增加困擾,少一個重要註解,人家要多花一段時間看您在寫什麼,想想要是您同伴也這麼做,陷入負向循環是遲早的事…不要不信邪喔
基本上多想兩分鐘,做一些比較完善的構思,再開始執行,會比您塗塗改改要容易多了,而且其實剛開始會看起來做事速度比較慢,您東西做大後您會發現人家會操死,而您有事前規劃會比較好做事(除非您只是要接小案子維生爾以,東西改完下個案子又是打掉重練)

沒有留言:

張貼留言