这些年做了很多项目,我从一个菜鸟开发不断成长,自己积累了一些方法,今天我就来和大家分享下我的项目开发心得。

什么是一个好项目

我认为一个好项目,要做到如下几点:

  1. 要有好的传承性;
  2. 总体架构合理,分层清晰;
  3. 实现上能合理贯彻设计目标,选型恰当,代码清晰易懂;
  4. 部署合理,监控完备,数据统计恰当。

下面我就来逐一说明下:

好的传承性

我把这一条放在第一位,因为我认为项目的传承性做的好,比任何东西都更加重要。

因为一个项目,通常需要很多人来共同完成,而且随着时间推移,会有老同学离开项目,新同学加入项目,甚至项目负责人也会更替。

我们通常在接手一个项目时,很多时候都有重构一版的需求,为什么?我总结大致如下:

  1. 项目现状混乱,文档很少,不了解设计;
  2. 代码有坑,不敢轻易修改;
  3. 开发模式混乱,都找不到最新代码;
  4. 没人知道里面的功能还有多少在用。

这些问题十分常见,我接手过的项目,也有上面这种情况的。不知道大家遇到这种情况是什么感觉,是不是很难受?重构吧,都不知道都有哪些功能,风险十分的大;继续维护吧,觉得越做坑越多。

也就因为这样,很多项目最终被抛弃,以失败告终。所以项目能否被传承,好的文档十分的重要,虽然会花很多时间,但如果你想让你的项目活的长,这一点非常的重要!

至于如何做好文档,我们向开源项目学习即可。我甚至觉得就算代码写的不好,但是文档写的好些,让别人明白你到底在干啥,都十分不错。

其实说白了,做好这件事情,更多的是为了别人能更好的理解你的项目,对自己来说,也能培养个好的习惯。

好的设计

好的设计,就好比一份好的作战计划,如果这个没有做好,那在执行的时候就会十分的混乱,问题层出不穷。

要做到这一点十分的不易,通常在评价一个人的技术能力时,级别越高也越看中这一点。因为我的能力有限,在这里我说下自己的体会,还望大家指正:

  1. 要养成勤于思考的好习惯,平时多积累, 俗话说,好记性不如烂笔头,所以多记录总没有坏处。;
  2. 遇事多问为什么,且得出答案时,建议再对这个答案问为什么,寻找更深层次的原因,这样不停的折磨自己,直至满意;
  3. 能够虚心向别人请教,也不要轻视别人对你的提问,你自己没什么了不起的;
  4. 做事情要专注,现在那么多新东西,找准自己的方向,理解的越深,对自己做出好的设计抉择越有帮助;
  5. 不断反思,永远不要满足,看如何能做到更好。

做设计的时候,通常就是在做各种抉择。比如webserver使用Apache还是Nginx;数据库使用Mysql还是MongoDB等等,只有自己对知识的理解越深,实践越丰富,才能做的越好!

好的实现

这个步骤就好比在打仗时,你如何完美的执行作战计划,我觉得需要做好如下这些事:

  1. 分工明确,接口合理;
  2. 要有很强的执行力;
  3. 和项目内成员保持良好沟通,敏捷开发是个好的选择;
  4. 项目的成败,很多还要依赖外部的合作,所以不要怕麻烦,维护好的合作关系这一点至关重要;
  5. 代码清晰,避免过于复杂,如果你觉得这一块逻辑有点复杂,那你应该考虑分层简化;
  6. log要详细,出问题时能做到快速排查。

借小说《亮剑》中,一个原来的国民党作战厅高级将领的一句话:在解放战争期间,国军的战术,都是天才制定的,但确是由蠢才执行的。

所以,好的实现非常重要,这一点做不好,再好的设计也是白搭。

部署监控及统计

  • 先说部署,要做好如下几件事:
  1. 机房选择合理;
  2. 部署方法简单易用;
  3. 线上控制简单易用;
  4. 代码更新上线简单易用;
  5. 灾备实施简单。
  • 接下来是监控方面:
  1. 核心服务监控点考虑周全;
  2. 监控服务可靠;
  3. 易于配置升级。
  • 最后说下统计:

产品的发展,离不开数据,通过数据分析来知道产品的发展,好过于拍脑袋做出的决定。

想要有个好的统计,至少也要有下面这些:

  1. 可靠的日志收集;
  2. 易于扩展的日志分析;
  3. 良好的界面展示。

结束语

上面这些,说实话,真是说起来容易做起来难啊!但也正因为这样,我们才需要不断努力,不停的锻炼提高自己。正所谓是活到老、学到老。

Fighting! Fighting! Fighting!