程序开发必备的六个信条

2023-10-18 05:50

本文主要是介绍程序开发必备的六个信条,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

信条一:防火胜于救火

设计时充分考虑各种可能的出错场景,进行防御,设计文档一定要有引用,用于证明设计的可行性,如果没有引用必须给出科学的证明。

开发原则

  1. review

    1. 代码/设计审核

    2. 单元测试审核

    3. 通用规则优先于特例

  1. 考虑极端情况

    1. 集合只增不删

    2. 循环次数过多

    3. 连接/内存过高

    4. 计算量过大

  1. 预设异常容错

    1. 外部依赖出错不会整体出错

    2. 考虑处理三方库异常

    3. 考虑外部API是否有阻塞I/O行为

  1. 新功能配置依赖

    1. 强依赖以文件存放

    2. 更改使数据不兼容的配置

    3. 弱依赖以ZK存放

    4. 无论配置有无,程序都可良好运行

灰度原则

  1. 强制军规

    1. 代码正式上线前,必须灰度一个高峰期;

  1. 评估功能灰度开关

    1. 前期发布默认开关关闭

    2. 后期发布默认开关打开

    3. 未来需持续跟踪该开关

  1. 兼容性

    1. 和老功能保持数据/接口兼容

  1. 其他提高警惕的行为

    1. 修改发布面板参数

    2. 发布扩容机器

信条二:可运维优先,不做不可运维的产品

可运维意味着:简单,可快速恢复,抽象,自动化,自助化

消除手工操作

  1. 脚本化

    1. 上下线

    2. 更改配置信息

    3. 熔断

    4. 开关端口

  1. 操作可追溯 :变更历史可查看/检索

系统高可用

  1. 出错可恢复 :敏感变更操作可回滚

  2. 容量可扩展

    1. 一键容量切换

    2. 一键新机器业务部署

系统可监控告警

  1. 异常流量监控

    1. 单点整体流量下降

    2. 多节点流量下降

    3. 单点大量请求出错

  1. 节点负载监控

    1. 集群容量检测告警

    2. 机器监控(运维)告警

  1. 业务异常监控

    1. 心跳失败

    2. SQL变慢,DB异常

  1. 节点内部异常监控

    1. ZK异常;

    2. 端口绑定异常

    3. 不间断升级异常

信条三:做产品而不只是做技术

产品要有用户体验,要有文档,界面,要有SLA,Work backward。

开发任何一个新功能时:以客户为出发点

首先为客户准备三个文档:press release,user manual,FAQ

每个不超过两页A4纸且不能有图片

产品输出

  1. 优先满足业务需求

    1. 多以使用场景考虑

    2. 少以技术实现考虑

  1. 以用户角度考虑使用场景

    1. 人性化界面

    2. 简化外部接口,把复杂留给自己

  1. 减少用户干扰

    1. 考虑接口兼容性

    2. 尽少暴露内部细节

    3. 尽量以惯例解释, 减少surprise

  1. 避免用户误用

    1. 减少低级错误

    2. 预设用户误用场景并尽量避免之

信条四:效率优于速度

宁可延期做一个质量有保证的产品,也不要为了快速上线做一个质量差的产品。线上bug,不好的体验会导致客户流失,造成更大的损失,得不偿失。

质量保证

  1. 质量优先于速度

    1. 工时评估

    2. 代码质量评估

    3. 迭代开发

测试保障

  1. 测试重要性不亚于代码

    1. 单元测试

    2. 功能测试

    3. 压力测试

    4. 稳定性测试

    5. 回归测试

信条五:简单而不简陋

简单:功能齐备,但是支持性的工作很少

简陋:用hack,working around的方式完成一项功能,产品文档,设计文档复杂,费解,自己都整不明白

对代码来说:

简陋级别: 可编译,可读(逻辑清晰)。

简单级别 :可测试(有单元测试,且不mock大多场景)

可维护: (加需求功能不改变框架)

可重用: (以lib库对方式对外输出)

自动化

  1. 脚本化代替手工操作

    1. 线上操作依赖脚本

    2. 人工负责决策是否操作

    3. 脚本负责实际操作

通用化

  1. 通用规则优于特殊规则

    1. 减少代码和功能上难以理解的surprise

    2. 减少未经实践,只走捷径的奇技淫巧

    3. 避免重复造轮子

信条六:数字说话

用真实有效的数字来支持各种决策

数据支撑

  1. 服务等级协议

    1. 系统稳定性/可用性的高低

    2. 事故损失的大小

  1. 系统优化程度

    1. 节点性能(QPS,响应时间)

    2. 资源利用率(CPU/内存等)

数据预测

  1. 容量评估

    1. 根据业务流量增长预测未来

    2. 根据节点负载预测所需资源数目

推荐阅读:

【滴滴】职级、薪酬、绩效全认知

这篇关于程序开发必备的六个信条的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/230601

相关文章

提升PrestaShop外贸电商网站安全的几款行业必备工具

提升PrestaShop外贸电商网站安全的几款行业必备工具 PrestaShop发展历程 PrestaShop是一款优秀且强大的外贸开源电商软件,我们开始使用PrestaShop始于2009年,那时PrestaShop还是0.9版本:界面清新,性能强悍,扩展友好等特性,既没有Magento的笨重,也没有ZenCart的古老,更没有OpenCart的脆弱,因此PrestaShop如雨后春笋,迅速

zblog自定义关键词和描述,zblog做seo优化必备插件

zblog自定义关键词和描述,zblog做seo优化必备插件     首先说下用到的一款插件:CustomMeta自定义数据字段 ,我们这里用到的版本是1.1,1.1+版增加了列表页标签支持!     插件介绍:文章,分类等添加自定义数据字段。1.1+版适用于 Z-Blog 2.0 B2以上版本。     在zblog2.0beta1里面,这个插件是集成到了程序里面,beta2里面默认没有了

程序员必备心理学——心流

心理学之心流 前言一、“心流”是什么?二、心流的好处二、如何进入心流心流状态的四个阶段第一个阶段:挣扎第二个阶段:放松第三个阶段:心流第四个阶段:巩固 进入心流的技巧 总结题外话 前言 你是否常常感觉自己明明学习了一整天,但是就是感觉没有太多的收获。这个时候除了你的学习方向等问题之外,也可能是你的学习方法太低效了。作者本人就经常有这种情况,好在偶然间在b站刷到一个大佬的这个心

JAVA程序开发参考手册

开发十年,就只剩下这套架构体系了! >>>    <!--包装数据类型 ->//javalangInteger——整数类 //bitCount方法——获取二进制补码中位的数量 int i = 10;int count = Integer.bitCount(i);System.out.print(i + "的二进制补码表示形式的1位的数量");System.out.println(count)

PHP程序开发参考手册

开发十年,就只剩下这套架构体系了! >>>    /**语句*///if语句——条件控制语句<?php$num = 2011;if(($num%4)==0&&($num%100)!=0){echo "$num".'年'."是闰年";}else{echo "$num".'年'."是平年";}?><?php$num = 2011;if(($num%4)==0&&($num%100)!=0

Python基础—Python 中pip的8个必备命令

在Python开发中,pip是一个非常强大的包管理工具,用于安装和管理Python包。下面我将介绍8个pip的必备命令,并通过代码示例来讲解它们。 1. 安装包 pip install package_name 这个命令用于安装指定的Python包。例如,要安装requests库,你可以运行: pip install requests 2. 升级包 pip install --up

高效办公必备!图片转PDF功能,让工作更轻松

在数字化时代,将图片转换为PDF格式是一项非常实用的技能;无论是在工作、学习还是生活中,我们都可能遇到需要将图片转化为PDF格式的情况;今天通过这篇文章给大家分享四款好用的图片转pdf 的工具: 第一款:福昕转换器 这款专用于解决pdf与各种格式之间进行转换、合并以及音视频转文字等等各种需求的办公工具,其操作的界面非常简洁并直观,对新手伙伴非常友好;其次可以支持高达50个文件同时转换的意见批量

五一假期出行必备的高科技手册

今天小编看了眼朋友圈,发现无节操的同学真是太多了,你们出去玩就好了,为啥要发图呢……各种晒,简直要虐死上班狗啊。 不过掐指一算,小编期盼已久的五一马上就要来了。抱着拯救同样期待假期出行同胞们的想法,小编给大家准备了一份出行旅游必备的高科技手册,助大家防火防水防(yi)搭(yue)讪( pao),下面将会开启高(zhuang)冷(BI)模式,如有雷同,纯属故意。 攻略篇 攻略在手,说走就走。

【node.js 环境配置】爬虫必备-10分钟教你配置node.js环境

Node.js® 是基于Chrome 的 V8 JavaScript 引擎构建的 JavaScript 运行时。下面我们一起来安装。 下载地址:https://nodejs.org/zh-cn/download/ windows 安装,点击下载下来的node-v16.14.0-x64.msi 文件,进入安装界面。 这里改成D盘。 点击next 勾选&

Cozer必备!一站式解锁扣子全网最全插件集锦(二)

俗话说,工欲善其事必先利其器! 用过Coze的朋友都知道,插件在Coze里的重要性。插件库就相当于武器库,一个好的插件,就相当于一件趁手的兵器,可以让你事半功倍! 程哥精心整理了Coze最常用和好用的插件精选集,将分批送给大家,今天是第二批,包括2大类:图片处理和文档处理 图片处理 插件名称:图片理解 出品方:扣子官方 插件工具:imgUnderstand 功能描述:回答用户关于图像的