金山系列软件中的一部分代码open source了,自然地引起网络上以及IT业界的一片热评。其中关于已经开源的这部分外围代码的代码质量的问题,更是热中之热;以下是关于这个问题个人的一些思考:
从本质上说这里面就是个trade off,也就是平衡和取舍的问题。产品项目的预算投入,进度压力,各方面人员的协调,风格和习惯的统一,等等。
许多优秀开源项目,比如Boost,其中很多作者本身都是学者兼开发或者是带有研究性质的开发人员,在高校、非盈利组织或者商业企业的非直接盈利项目的资金支持下,在很少进度压力和商业压力的情况下,精雕细琢,多次迭代后,构建出的精品代码。用这样的标准来要求所有的软件产品,特别是商业产品(当然除去少数关系重大和长远的基础核心部分外)的构建,是不科学的,也是不合算的,因为及时占领市场和足够的盈利,以及获得用户的赞许才是商业软件最重要的目标。
回头来看金山目前开源的这些产品,比如这里讨论的金山卫士,其从推出就是免费的,是为了市场上的先期推出的同类工具软件及时比拼占领些许相关市场份额,其并不是金山的基础和核心产品;从这些先天的条件看,这个产品的商业投入不会很大同时又有快速推出的要求,能有目前这样的产品质量,是合理的,从企业角度和用户角度看也都是可以接受的。
说到这里,就感觉有必要涉及一下“重构”,这个现在大家都很重视同时也经常谈及的话题。为何大家都很重视?而且常常谈及?这其中当然有软件构建本身的特点,比如对需求理解的不断深入和调整、设计的不断改善和演进、代码风格的统一以及细节的完善等等;但是,有个大家在潜意识里都感觉到,平时却很少谈及的缘由--进度和成本,因为有了这些压力,产品的第一版往往不是很完美的,然后如果还做后续版本的话,那么就要引入重构;因为有了这些压力,在经过多年之后,如果这个产品还存在的话,那么就要进行大规模的重构。简单的说,重构之所以重要,不仅仅是软件构建本身特点所引发,也是商业压力之下的构建过程的有效应对之道。