项目开发中的十个建议

前言

在写代码时,我们很多时候都需要去写各种各样的业务逻辑,在这个过程中,我们的思绪很容易被大量的业务逻辑所淹没,从而导致写出来的代码越来越像是一坨屎山,后面也很容易收到他人代码风格逻辑的影响,这其中,最常见的就是一个问题就是 长方法,在代码的开发过程中,代码越写越长,甚至可能出现一些上千行的方法,导致在进行阅读的时候,我们不得不不断的去阅读上下文,增加了大量的开销时间,在这里笔者其实有很多项目开发的建议,在这个里面我给出我认为最重要的10个基本原则,结合具体的工程实践,来跟大家分享一下怎样尽可能不去写出屎山代码。

开始之前

在讲解这些开发建议之前,你可能首先会需要去学习一些开发理念:比如SOLID或者OOP,OPP,常见的设计模式,go语言的设计哲学思想:https://golang3.eddycjy.com/posts/go-env/,同时因为笔者使用的IDE是IDEA,主要用来开发 java,python,go,rust,C++等语言,因此后面的一些建议 也有一些是围绕着IDEA来的

建议

开发理念

1、关键逻辑预留拓展,核心逻辑明晰结构注释和告警

我们在开发新需求的时候,如果是一套新的功能,我们在最开始进行 设计的时候就应该根据你的经验和场景想清楚什么地方可能会有拓展行为,有哪些行为是核心重要逻辑,在这个基础上进行架构上的设计,这一点非常重要。具体的例子我们可以按照增长裂变这个场景举例子 ,他的核心逻辑只有一个 就是做好用户活动归因,并且在这个基础上如果我们是想实现以一个增长裂变的框架,后面进行后续开发的时候尽量减少后端的工作量,逻辑 尽可能的服用,你就要想清楚一件事情,不同的增长裂变框架他们之间不同的点是什么,相同的点又是什么,对于复用的逻辑我要怎样尽可能的做到拓展性够好,就算后续进行一些额外的业务逻辑的补充也不至于要改很多地方的代码,这个细说起来稍微有点复杂,后面会单独出一篇文章来给大家 来结合这个设计理念来讲解这套流程。

2、墨菲定律和第一性原则

  • 墨菲定律:一个坏的事情用可能发生,那么他就一定会发生。举个具体的例子:
def main():
	mysqlClient = new_mysql()
  while 1 :
    xxxxxxxx
    xxxxxxxx
    xxxxxxxx
    mysqlClient.Do()
    sleep(10)

这是一段非常简单的伪代码,简单来说就是我创建一个while代码 每间隔10s做一些操作然后操作mysql去完成一些数据库相关的读写操作,这是一段非常简单的代码,但是 这其中仍然存在很多问题:

1、首先我们并没有对里面的方法去做try catch的操作,这意味着这段代码一旦出现问题,整个程序会直接退出。

2、并且如果这段代码是按照脚本的形式运行的,那么在生产 环境上你也没有额外配置对某个进程的一些监控,那么你也讲无法第一时间感知到自己的程序出现了问题。

这两点 最终会导致一个问题,你被告知自己的问题的时候,往往是已经对业务带来了严重的影响,笔者 之前接受的一个项目就是类似的场景,不过使用的并不是 mysql而是mongo,并且是研发自己搭建的mongo,mongo的一个从库挂掉了从而导致这段代码失去运行了16天,因为他每天给业务带来的指标非常细小,从而相关业务方也并没有直接怀疑是内部系统出现了问题,结果就是该问题被上升至了p0,而后续引发的公司对离线脚本服务治理那就是后话了。

  • 第一性原则:我们要做一个喷泉,首先它要是个喷泉

    其实这条原则能够帮助我们轻松找到一个项目需求中研发的重点,也就是我们前面 说的 核心逻辑,在这个基础上我们去定义的什么样的喷泉,喷出 什么 花型的喷泉,就是我们前面说的可以拓展的点。

3、三天以上的需求,必须写好技术方案

代码/架构开发建议

1、使用配置中心,而不是固定代码

2、理清模块之前的依赖关系

3、常量值/模板 永远只维护一份

4、搞好和测试的关系 and 写好单测

工具使用建议

1、用好IDEA的书签功能

2、Sublime、Termius工具和Screen命令

3、使用IDEA代码抽象工具,降低你的代码行数

结语

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值