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