一些编程和管理的经验
一些编程和管理的经验##
这些年的一些编程经验,以及在管理上的一些东西###
- 
要适当解耦,但不是要全部解耦,要学会划分好模块 
- 
查找问题的根源,而不是着眼于解决当前问题 
- 
先思考,再写代码 
- 
不要用原始的数组,而是使用boost::array 
- 
尽量使用shared_ptr,如果有效率需求使用unique_ptr 
- 
如果界面框架提供MVC模型,一定要使用MVC的方式来编写 
- 
不要滥用继承,继承一定要有逻辑关系,is-a的模型,不要为了方便一些操作就把所有东西都放在基类,然后继承下来,如果是为了方便操作,复用代码,应该将代码封装成一个函数 
- 
C++里面如果使用coroutine,一定要记得清理资源 
- 
利用BOOST_SCOPE_EXIT在资源申请的地方顺便写下资源清理的代码,类似于go的defer 
- 
与人交流,如果超过一定的复杂度,最好带上设计图或者框架图 
- 
熟悉团队的英文水平,在使用英文命名变量或者类的时候,记得带上注释,如果是缩写,也要带上中文注释 
- 
在使用map的时候,key如果是int,string这种基础类型,最好使用typedef,便于让人看出这个key是干什么的,list,vector同理 
- 
如果程序需要处理特殊处理,应该要写注释,比如在一个const的类函数里面,如果需要const_cast<T*>(this),那么要写上注释,告诉其他人为什么要这样做 
- 
统一变量,函数的名词命名,比如评分,有的用score,有的用judging ,整个项目里面应该统一使用一种名词,防止混乱 
- 
即时沟通,不要闷头做事 
- 
即时审查代码 
- 
利用MVC模型来进行数据和界面分离,然后通过数据来做测试 
- 
项目确定的时候,需求没确定,做一步看一步的时候,如果不知道数据要归谁管理,统一放在global里面,然后定时整理代码 
- 
一个项目里面最好要有一个可以统一放置全局变量的地方 
- 
如果对性能,内存要求不是很严格,使用vector而不是list,因为你永远不会预料到需求是否会有随机读取的操作,那到时候只能用std::advance来获取 
- 
善于利用stl algorithm,如果遇到stl的数据处理先看下有没有对应的stl算法 
- 
由于STL的代码编写可能很长,所有可以建一个文件放置全局宏定义,类似QtGlobal文件 
- 
不要越级去分配任务,否则会让下属只做更上层的事情 
- 
过分宣传个人责任与惩罚,这是某种形式的管理懒惰,进而导致的是多做多错,少做少错,尽量不做 
- 
管理工程师要从技术上管理,在准备对一个工程师进行管理的时候要让他承认你的技术 
- 
要培养下属较真的能力 
- 
工程目录要制定好 
- 
要有一个地方保存改进记录 
- 
产品跟技术,不能偏向,两者需要争论,然后才能让大家理解两边的想法 
- 
做事要懂得互惠 
- 
绩效考核主要面对管理者,避免量化技术 
- 
弱化测试和开发的边界,引导技能互通 
- 
测试的出现并不是为了给开发推卸责任,而是要帮程序员找到问题的所在,从而更好的解决问题 
- 
定期整理问题 反思 记住是 反思 不是找谁负责 而是找怎么避免问题,如果是技术水平管理者有必要帮助下属提升技术水平,这就是 30条 的做事要懂得互惠 
- 
管理者不仅要懂人,还需要懂业务和技术 
- 
给每一段代码编写注释,不管代码多简单,都打上几段的注释 
- 
测试的好处只有在项目足够大得时候,越进行到越后面,需要更改的需求越多才会显示出来,刚开始是会让大家感觉到厌烦的东西 
- 
测试人员及早介入项目,针对功能建立测试用例,开发人员进行查看测试用例,然后考虑是否可以针对这些功能进行自动化测试,然后建立自动化测试的文档,后面写代码的时候需要针对这部分进行制作 
- 
测试驱动开发的关键在于在编写测试的时候理解需求,思考代码的组织和架构, 而非为了测试而测试 
- 
与其依赖于测试员寻找bug,不如靠整个团队自己产生没有bug的代码 
- 
技术的老大应该随时紧跟潮流,而不是仰赖自己的技术出身管理整个技术团队,但是用的却是几十年前的那一套技术 
- 
变量函数名等不要吝啬单词 
- 
程序员要从测试的角度思考代码 
- 
测试驱动开发是为了将软件开发分成一个个粒度比较小的开发任务 
- 
将一个bug转换成一个测试用例 
- 
敏捷开发的重点在于自动化测试和持续发布,而不是每天开会 
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号