盘点一下2021年项目中的那些经验教训

2021在项目中遇到过很多坑,走了很多弯路,这里盘点一下,算是经验教训吧。希望在新的一年里有更多的成长和收获。也希望各位能够通过我的经历,学习到一些东西,争取在未来的开发道路上少走弯路。

1.任何一个功能模块都要有运行日志

之前的Demo项目开发的多了,养成了不写日志的坏习惯,结果开发一个线上项目没有写日志,这家伙,出问题排查的时候差点没有把自己恶心死和现场运维的沟通的时候也很费劲。所以说开发的时候一定要写日志!!!日志就像警察破案的线索,没有线索警察怎么破案呢?我建议日志在允许的范围内一定要尽可能的写全,好的日志就像一本叙事故事书,你可以通过日志清楚的知道程序做了什么,没有做什么,哪里出了问题,出了什么问题等等。

但是有一点要注意,敏感信息绝对不能输出到日志,包括:

1.个人敏感信息(账号密码身份证ID等等)

2.程序敏感信息(服务器地址,请求URL等等)

下面我列举了一下日志一定要输出的关键信息,这些信息对于线上问题的排查至关重要:

1.关键步骤的执行结果,返回值

2.Exception的返回信息,崩溃的内容

2.开发的时候一定要加强模块自测

在开发的过程中,过于追求效率和速度,没有进行严谨的程序自测,结果模块出现了各种小问题,大部分时间都浪费在了后续与测试沟通和修改的过程中了。开发过程中慢就是块,程序一定要严谨的自测,不要把测试的责任移交到测试人员手中,开发一定要把关好程序的质量。我建议开发人员一定要在开发完毕之后,列一个测试表,逐项进行测试,测试完一项,勾选一项,确保测试的完整性。

常见的测试项目如下:

1.有没有对入参进行检查,传入空值,边界值和极限值会不会出错?

2.有没有对程序用到的资源进行释放?

3.程序用到的目录不存在程序能否正常运行?

4.程序用到的文件被占用怎么办?

5.对程序的连续增删改查操作,会不会出问题?

6.执行一半,放弃任务,然后重新开始任务,任务能够成功?

7.会不会出现缓存不刷新的问题?

.....

自测尽量要把可能出问题的一些地方都覆盖掉,这样测试人员测试的时候会很轻松,能把精力放到那些更不容易发现,隐藏更深的问题上。

3.能够自动化的部分一定要提前实现自动化

在实际开发的过程中,开发人员的人手肯定是不够的,所以我们要把精力完全放在,必须我们做,且只能我们做的工作上。很多没有技术含量,和重复性的操作,一定要尽早的实现自动化。相信我,这部分投入是性价比很高的。我就是一开始没有实现自动化构建打包,结果把大部分时间放在的构建项目和打包的过程上,其实这方面的工作,完全可以通过自动化工具实现。

工作中,自动化的工作,和一些效率工具,可以极大的解放我们的生产力,让我们有更多的时间投入到更重要的工作上去,所以我们要学会使用各种各样的自动化工具。

4.梳理服务地图,理清服务间的依赖关系

对于项目新手来说,在进行修改之前,一定要梳理服务间的地图,理清服务间的依赖关系。程序间往往牵一发而动全身,我们的修改不能只看本模块的功能,也要看对其他模块功能影响。所以我建议对已经存在的接口慎重修改,新的功能和接口尽量通过扩展新接口来进行实现,避免影响已经存在的功能。如果必须修改已经存在的功能,除了测试本模块以外,还需要测试其它的关联模块,确保整个功能的调用链是可靠的。

5.涉及到网络请求,一定要考虑到规模化的过程中对服务器造成的压力

编写单机应用,进程间通信,我们一般不会考虑通信压力。但是在开发互联网应用的时候,我们在编写客户端网络请求的时候,一定要慎重,考虑到网络请求,对服务器造成的压力。也许你不经意间的一个网络任务,能直接把服务器搞爆炸了。所以我们一定要监控,客户端对服务器请求的频率,以及请求的数据量,防止在上线规模化之后,客户端的问题把服务器搞瘫痪了。

6.网络请求中添加冗余的身份信息,为将来扩展留好富裕量

在客户端开发初期的时候,很多时候我们不知道,将来网络任务可能用到哪些信息。秉持着宁可浪费,觉不错过的理念,我们一定要在网络请求的时候添加充足的身份信息。

一般包括:1.客户端的版本号 2.客户端的身份指纹 3.用户的登录ID 4.用户的操作系统信息 5.用户的硬件信息等等

这些信息在将来客户端升级向下兼容的时候,会很有帮助。

7.组织好代码的目录结构

由于之前没有对应的经验,项目仓库的目录结构整的乱七八糟,这对将来的开发和项目的扩展很不友好,所以这里我梳理了一个最佳的项目结构供大家参考,希望大家将来能够一开始就把项目结构组织好。

src/             //src用来放置文件的源码
    3rd/         //3rd用来放置项目依赖的第三方库 
    core/        //core用来放置项目的核心内容
    tools/       //项目用到的各种工具
test/            //test用来放置项目的各种测试内容
doc/             //doc用来放置项目的各种文档
make/            //make用来放置项目的打包和构建内容
README           //README用来说明项目的基本信息
COPYRIGHT        //COPYRIGHT用来说明版权信息
LICENSE          //LICENSE用来说明证书信息

8.正确的分配程序文件对应的目录

windows操作系统里面,有各种各样的目录,我们应该把文件分好类,把对应的文件放到对应的目录下。如果文件的目录地址搞错了,会对以后的程序迭代升级带来各种各样的问题。

windows的常见目录的介绍如下:

C:\ProgramData目录是PC上所有用户共享的目录,这个目录用来存储所有用户通用的程序数据的,在一些windows系统上操作ProgramData里面的数据需要管理员权限的。这里建议存储一些所有用户都用得到的通用只读数据。

C:\ Users\UserName\ AppData\用来存储每个windows用户自己的应用程序数据文件夹。开发的程序可以在这里存储当前程序的用户数据和信息以及用户的一些配置。

C:\Users\huayu\Documents 一些应用程序,尤其是PC游戏选择将文件存储在文档目录下,这使得人们更容易找到,备份和编辑这些文件。

C:\Program Files(x86)\AppName用来存储程序的安装文件,这里面的文件是管理员权限的的只能读取。

C:\Users\huayu\AppData\Local\Temp是temp目录用来存储缓一些临时文件

9.协作沟通文档一定要提前做好

开发人员在与测试人员和运维人员沟通的时候,肯定会出现一些解决方法固定且出现频率比较高的问题。针对这些问题,我们可以通过协作沟通文档,将常见的问题和解决方法通过协作文档沉淀下来。以后再出现类似的问题,直接让对应的人员看协作文档就可以了,这样沉淀的时间长了可以解放开发人员的时间。避免陷入频繁的重复的无效沟通过程中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农飞飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值