谈谈程序设计的一些原则
程序的世界丰富多彩,如同宇宙中天体系统。按照粒度大小、层次结构、复杂度分为:平台(Platform) 、 系统(System) 、软件(Software)、工具(Tool)、模块(Module) 、类(Class) 、函数(Function)和语句(Statement)
然而,不管多么复杂的程序,都可以分解成一句句简单的代码。为了达到程序的目标,我们需要遵循一些设计原则和规范来编写代码。
常见的目标:
(1)稳定性
(2)高性能
(3)可扩展
(4)可移植
(5)安全
当然,对于不同类型的程序,目标的是不一样的。
例如:photoshop在可扩展、可移植、安全方面就没有chrome考虑得那么多。
对于射击类网游,网络时延是一个很重要的指标,所以前后台通讯一般不用TCP,而是采用改良后的UDP(在应用层加入了网络包丢失和乱序等异常处理)。
对于Windows系统,稳定性、高性能、安全性、二次开发、向后兼容性、多语言支持都十分重要。
对于微信,由众多子系统组成,核心功能的稳定、高性能、负载均衡、容灾、数据一致性是其要重点考虑的设计目标。
对于平台而言,数据交换等标准化,功能服务化显得尤为重要。
系统(System)
一个复杂的系统一般分为多个子系统
按照功能分为:接入层、业务层、存储层
业务层又会按照功能拆分成核心业务和周边子系统,分别用独立进程提供服务
业务层的容灾和负载均衡可通过Proxy中转服务器来简单实现
数据一致性保证:
① 尽量无状态化,保证过程不依赖当前状态
② 数据Cache使用数据库缓存机制落地到文件
③ 有状态的业务通过存储层中转
易于阅读和修改
分层设计,防止循环依赖
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)