iT邦幫忙

DAY 9
2

打造軟體團隊系列 第 9

打造軟體團隊(8): 軟體專案管理-軟體開發階段, 要注意的事項. SCM, Coding style

  • 分享至 

  • xImage
  •  

接下來談軟體開發階段要注意的事, 我舉出SCM(Source Code Control Management)和Coding style來討論.
接下來談軟體開發階段要注意的事, 我舉出SCM(Source Code Control Management)和Coding style來討論.

版本控管是很重要的事, 做的好不好跟使用哪一套工具有蠻大的關係. 軟體版本管理的工具有很多, 有要錢的, 也有免費的. 取決用哪一套工具要看你的預算, 平台, 軟體團隊規模等因素.
好的SCM至少要包含幾個功能: 軟體版本控管 (廢話), 權限控管, 版本間的比較工具, 衝突時合併(Merge)的機制, 日誌(Log)的機制 , 分支(Branch)的機制, 版號與標籤的機制.

市面上常見的Source code control 軟體, 以管理方式來區分, 可以分為兩類, 列舉出幾個比較有名的如下:
集中式版本管理: CVS, SVN, Sourcesafe, Clearcase
分散式版本管理: Mercural, GIT

其中我用過的是 Sourcesafe, Clearcase, SVN 和 GIT. Sourcesafe 和 CVS 都是比較古老的產品, 現在用的人應該也慢慢減少了. 如果你只要管理你自己的軟體版本, 你又懶得去學, 恰恰好你是在Windows平台開發, 那也許你可以選擇用Sourcesafe, 不然我就找不到用他的理由了. 至於CVS已經由SVN (subversion) 繼承了, 所以用的人應該也不多了.

再來則是Clearcase, 他是Rational (現併到IBM內)的產品, 如果你是它的愛用者, 搭配 Rose, Soda, Clearquest 使用, 也許還不錯用. 但是它價格昂貴 (真的很貴), 除非是大公司, 一般小公司和個人應該不太會碰到它. 另外它客製化不易, 需要和IBM另外談, 也是一個問題.

所以我個人比較推的是SVN, 和 GIT. 這兩者的差別如下:

  1. SVN是集中式管理, GIT是分散式管理. 分散式管理的好處是速度較快, 不會因為一台Server掛了就造成很大的損失.
  2. 因為分散式的關係GIT 操作會比SVN快. (除了第一次Sync的時候).
  3. SVN的版號有一組遞增的SVN Number, 而GIT則是採用SHA-1的唯一識別碼.
    SVN Nubmer 比較容易記憶理解.
  4. 現階段SVN的Client端工具比GIT的多, 且比較好用.
  5. 上手的難度 GIT 會比 SVN 高.
    要使用哪一套我覺得見仁見智, 如果你想要比較集中化管理, 或是你的軟體開發團隊對SCM比較不熟悉, 就建議使用SVN. 但如果你想要有分散式管理的優點, 或是要進行跨公司甚至跨國的專案, 那就建議使用 GIT.

SVN 和 GIT 有許多功能或外掛可以拿來跟軟體開發流程結合, 如Commit log , Review board 等等, 這部分留待後面章節再來詳述.
另外提醒一點, 工具是死的, 人是活的, 所以團隊務必要對你所使用的SCM十分了解, 並且有"良好的習慣", 這樣才能真正發揮它的效益.

接下來談談Coding Style. Coding style 有兩個面相, 一個是寫程式的風格, 一個是寫程式的技巧:
風格-包括對變數, 函式的命名方法, 寫程式時的排版, 寫註解的方式與格式.
技巧-包括對Design Pattern的了解與應用, 以及好的程式撰寫習慣, 以避免一些看不見的錯誤.
好的Coding Style對軟體團隊的影響是:

  1. 讓團隊寫的程式碼更像"同一個人"寫的, 可讀性會更高. Review 或 Maintain 會更容易.
  2. 寫出更簡潔的程式碼, 讓Complier出來的程式效能更好.
  3. 讓開發者容易偵錯.

有人把Coding Style 看成一門藝術, 有人是看成一種習慣, 不管如何, 有很多公司都有所謂的Coding Standard 來協助軟體團隊寫出可讀性更高的程式碼. 如果你的軟體團隊沒有, 那麼試著訂立一套吧!


上一篇
打造軟體團隊(7): 軟體專案管理-軟體設計階段,如何撰寫設計文件
下一篇
打造軟體團隊(9): 軟體專案管理-軟體發行流程. 品質控管,發行頻率和版本規則
系列文
打造軟體團隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言