团队协作是软件开发的标配,高效的团队协作使项目快速且顺利交付,反之,轻则可通过加班解决,重则不能顺利交付项目,造成经济损失。
    如何使团队高效,因人而异,团队中每位成员都是独立个体,来自不同地方,拥有不同性格,技术水平也不一致,想统一所有成员思想很难实现。从另一方面切入,统一思想很难,统一其他方面很好实现了。只需要制定好规定,按规定执行就好了。统一可以大大减少这些人为因素造成的麻烦,让开发者专注于功能的实现。
    统一主要包含6个方面:环境,工具,目录结构,命名风格,注释风格,代码格式。
    环境,通常分为开发环境、测试环境、灰度环境、生产环境。一定要保证每个环境的系统版本、软件版本、中间件版本尽量一致,保持一致可以缩短环境适配时间,减少环境兼容代码,提升开发效率。
    工具,有设计工具、开发工具、调试工具、运维工具。不管选择哪种工具,都是为了完成工作。同一团队内的成员一定要选择相同的工具组合,甚至连工具版本和工具配置都要相同,可以减少软件版本差异和输出内容格式不统一带来的非功能性问题,重点是可以减少成员不必要地交流,减少矛盾地产生。
    目录结构,有文档目录结构、代码包结构、软件运维目录。文档目录结构清晰会使团队成员在看到目录时,一路了然,不用过多的思考和操作,即可顺利找到自己想要的文档,节省非必要的沟通时间。代码包结构清晰便于开发者将要实现的功能归类,不用再去找文档对应或与team leader沟通,使开发者专注于功能开发。软件运维目录定义是非常重要的,即软件和中间件安装的位置,在大型项目中,软件通常是分布式部署,数量庞大,提前定义好软件和中间件的运维目录便于分发操作,可以大大缩短项目上线时间和版本迭代时间。
    命名风格,命名不只在开发时会使用,在设计时也会使用。统一命名风格会使设计文档更易理解,因为团队成员习惯一种风格之后,会一直按照这种风格阅读文档,查找文档中的关键点也是轻松,当风格突然转变时,会使用团队成员非常不适应,还需要花一段时间是适应这种风格,这就会浪费很多不必要的时间。代码风格更是要统一,项目会越做越大,需求会越来越多,代码量自然也是成倍地增长,如果不统一风格,就会形成“屎山代码”,不要提维护了,能看懂都谢天谢地了。
    注释风格,主要指代码。代码不仅风格要统一,注释也要统一,一份有效的功能注释要比一段代码有用的多,代码烂可以重写,但注释烂那彻底烂了。当你看前辈编写的功能模块时,光从代码中不能完全理解要实现的业务逻辑是什么样子,如果有注释且注释是正确的,那么你可以根据注释去理解已实现的业务逻辑应该是什么样子,然后根据注释修改或重写这段逻辑。如果没有注释主要代码,或注释是错误的该怎么办?那就只有边修改提交边发布测试了。
    代码格式,还是指代码。上面已经说了好多,这里主要强调一下格式,格式不统一会增加代码提交时产生冲突的几率。开发者不是机器人,编码习惯肯定不同,所以不用要求开发者在编码时就留好空格或者1行代码达到100字符的长度就自动换行,只要在提交代码前使用格式化代码统一配置进行格式化代码操作后再做提交,就可以大大减少代码合并产生冲突的几率。千万不要小看代码冲突,虽然GIT已经为我们提供了解决代码冲突的方案,但是合并代码既浪费时间,又很考验开发者的眼力和毅力。如果解决冲突时不慎将其他开发者的功能删除或改动,还会造成不可估量的损失。
    统一了以上配置,就会有效减少外部因素和人为因素造成的影响,使团队成员可以专注于各自的领域,顺利完成任务。