编码原则这个主要是每周有时间大家一起参与Code Review,由于开发人员的能力不同资历不同,所以总会在代码的编写上和建立出现太多的不统一。比如命名啦,变量声明啦,有的时候会发现刚毕业的小朋友会将好多的私有变量放在类的顶部,同时一个类里写太多的方法,而且有的方法好长,还没有注释。于是有的时候你想了解一个方法的真正含义,要鼠标各种滚动,到变量声明去了解真正用途,好烦的。 有的时候代码的职责不明确,总是瀑布的思想方式去写代码,比如我们两个功能:一个是发送API请求建立虚拟机,另一个是在虚拟机建立成功时候将操作Log写入db。他们习惯性的将写DB的逻辑放在了发送HTTPRequst的方法里面,这完全是两个逻辑。另一个问题是由于创建虚拟机是需要时间的,同时尽管虚拟机操作成功有可能你写DB的时候网络原因DB失败了。我认为这应该是个原子的操作,两者的状态必须统一,就像是你在手机充值的时候显示{敏感词}扣金额成功,可是手机充值是出现问题,钱不是白花了吗。所以在这些有特殊逻辑的地方要建立特殊的统一的机制,不能每个人有各自的实现。 之后就是沟通了由于项目涉及到多个项目组,我们并不是同一个部门,相互也不熟悉,所以沟通上就会有一些需要注意的。首先要了解“对手”,主要是因为如果对方是个技术高手,你不能像个白痴小孩,要有所准备,最起码知道他们用什么开发语言,他们需要关注的业务逻辑,等等,不能让他们得到你是个菜鸟的结论。 由于口头的好多东西可能是没有经过检验的东西,所以前几次达成的协议我们只是做个参考,需要多次沟通之后才能确定结果,比如我们的项目中我们需要和Python组Java组协调消息接口,消息格式的时候。你要知道协调RabbitMQ时候我们需要定义下交互的Exchange,queue name 或者RoteKey等等,同时由于消息格式比较大,需要定义一些关键字或者预设字段的话,需要发邮件进行确认与沟通,避免开发过程中产生误会影响完成的功能返工。 总之这次搭架子的过程收获很多,一时半会也不能想的全面,以后慢慢聊,由于是第一次资历尚浅,好多的技术选型,问题考虑可能不成熟,也希望大家知道更多的能够纠错指导。 下面就说一些我们在架构中使用的一些东西: 开发语言:C#,java,Python; 数据存储:缓存,文件(xml),MSsql,Mysql,Redis; 数据交互:rest,json,RabbitMq; 操作系统:ubuntu,windows; 虚拟机监控:zabbix; 搜索:solr; 多线程,多层架构,模块式开发,组件式开发; 转自 http://blog.jobbole.com/73590/ |