9

我是如何开发一个项目的

 3 years ago
source link: http://blog.7rule.com/2018/04/20/my-project-method.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

什么是一个好项目

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

  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!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK