金山系列軟件中的一部分代碼open source了,自然地引起網絡上以及IT業界的一片熱評。其中關于已經開源的這部分外圍代碼的代碼質量的問題,更是熱中之熱;以下是關于這個問題個人的一些思考:
從本質上說這里面就是個trade off,也就是平衡和取舍的問題。產品項目的預算投入,進度壓力,各方面人員的協調,風格和習慣的統一,等等。
許多優秀開源項目,比如Boost,其中很多作者本身都是學者兼開發或者是帶有研究性質的開發人員,在高校、非盈利組織或者商業企業的非直接盈利項目的資金支持下,在很少進度壓力和商業壓力的情況下,精雕細琢,多次迭代后,構建出的精品代碼。用這樣的標準來要求所有的軟件產品,特別是商業產品(當然除去少數關系重大和長遠的基礎核心部分外)的構建,是不科學的,也是不合算的,因為及時占領市場和足夠的盈利,以及獲得用戶的贊許才是商業軟件最重要的目標。
回頭來看金山目前開源的這些產品,比如這里討論的金山衛士,其從推出就是免費的,是為了市場上的先期推出的同類工具軟件及時比拼占領些許相關市場份額,其并不是金山的基礎和核心產品;從這些先天的條件看,這個產品的商業投入不會很大同時又有快速推出的要求,能有目前這樣的產品質量,是合理的,從企業角度和用戶角度看也都是可以接受的。
說到這里,就感覺有必要涉及一下“重構”,這個現在大家都很重視同時也經常談及的話題。為何大家都很重視?而且常常談及?這其中當然有軟件構建本身的特點,比如對需求理解的不斷深入和調整、設計的不斷改善和演進、代碼風格的統一以及細節的完善等等;但是,有個大家在潛意識里都感覺到,平時卻很少談及的緣由--進度和成本,因為有了這些壓力,產品的第一版往往不是很完美的,然后如果還做后續版本的話,那么就要引入重構;因為有了這些壓力,在經過多年之后,如果這個產品還存在的話,那么就要進行大規模的重構。簡單的說,重構之所以重要,不僅僅是軟件構建本身特點所引發,也是商業壓力之下的構建過程的有效應對之道。