一个程序员的自我修养

本文探讨了程序员在开发过程中常见的故障类型,如空值问题和ifelse处理不完整,并提供了规避方法。强调了设计原则,如保持设计简易直接,尽早暴露问题,以及数据库设计的注意事项。此外,还讨论了异步任务处理的要点,异常管理和需求分析的重要性。
摘要由CSDN通过智能技术生成

开发

故障类型及规避方法

  • 空值
    • 导致的问题:空指针异常,空值导致脚本查询条件异常从而导致查询结果或者更新删除结果与期望不符,特殊场景流程错误
    • 规避方法:安全第一,不在当前实现控制范围内的外部变更都判空。代码或者脚本要注意防止出现空值时,也不会影响性能或者导致数据丢失
  • if else处理场景覆盖不完整
    • 导致的问题:特殊场景流程错误
    • 规避方法:if else的条件要单一,符合实际条件层级结构

设计

设计原则

  • 总原则
    • 简易直接最好。关联关系要简单、交互标准要简单。
    • 问题越快暴露越好。不能及时发现的问题最可能变成大问题。比如数据丢失。1、同步比异步安全2、从备份中取数据,可能会隐藏数据没有成功持久化的问题
  • 数据库
    • 主表的主键不要用业务号。原因:1、主键通过用于增删改查,通过有规律的业务号作为增删改查的入参,则接口是有风险的
    • 业务数据和过程数据不能保存在同一个表中。原因:1、容易出现数据用错的情况 2、运维、报表查询数据困难
    • 避免使用递增序号的方式保存数据。确实需要使用时,要处理序号的获取性能问题,避免使用直接查询该表序号最大值来确认下一个序号。原因:数据库性能最容易出现瓶颈。
    • 所以表都应该有创建时间、更新时间字段。
    • 为了提升查询性能,建表时要考虑增加冗余字段。原因:单表查询性能比多表查询好很多。
  • 异步任务
    • 失败要有监控
    • 不成功不能清理原始数据
    • 要有自动重试、手工重试、手工批量重试机制
    • 用MQ还是自动任务?答:
  • 异常处理
    • 异常有监控
    • 异常自动重试机制
    • 异常人工处理

需求

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值