网站建设十胜石,可以做微课ppt模板 网站有哪些,购买帝国cms做网站代理,想自己做网站推广写了这么多年代码#xff0c;依旧做不好一个项目做好一个项目是人力、产品、业务、技术、运营的结合#xff0c;可能还叠加一点时机的因素#xff0c;就我们码农而言#xff0c;工作就是搬砖#xff0c;实现产品#xff0c; 给业务提供支撑。“给祖传代码加 BUG 修 BUG”… 写了这么多年代码依旧做不好一个项目做好一个项目是人力、产品、业务、技术、运营的结合可能还叠加一点时机的因素就我们码农而言工作就是搬砖实现产品 给业务提供支撑。“给祖传代码加 BUG 修 BUG”“拿起键盘一把梭”这些戏谑程序员的话听多了真的会让程序员麻木仿佛大家都是这么干的。从业多年堆过 shi 山接手过祖传代码 已经不能沉下气去查看、调试 shi 山代码 说实话很累。本人一直推崇写流畅、自然、可自解释的代码让优雅成为一种习惯 给自己留个念想、给后人留个好评。温故而知新聊一聊现代编程几大常见的编程原则普世原则KISS (Keep It Simple Stupid)保持系统结构简单可信赖YAGNI (you arent gonna need it)当前确实需要再去做Do The Simplest Things That Could Possibly Work思考最简单可行的办法Separation of Concerns关注点分离Keep Things DRY保持代码结构清爽 Dont repeat yourselfCode For The Maintainer站在维护者角度写代码Avoid Premature Optimization避免提前优化Boy-Scout Rule清扫战场清理口水话注释、无效代码模块(类)间Minimise Coupling低耦合Law of DemeterDont talk to strangers对象方法只接触该接触的对象、字段、入参Composition Over Inheritance组合而不是继承Orthogonality正相关概念上不相关的事物不应在系统中强行相关Robustness Principle代码健壮性Inversion of Control控制反转模块(类)Maximise Cohesion高内聚Likov Substitution Principle里斯替代原则将程序中对象替换到子类型实例不会报错。Open/Closed Principle设计的实体对扩展开放对修改关闭Single Responsiblity Principle单一责任原则Hide Implementation Details隐藏实施细节Curlys Law柯里定律为确定目标编写特定代码Encapsulate What Changes封装变化Interface Segregation Principle接口隔离原则Command Query Separation命令查询分离KISS大多数系统保持简单会运行的很好。更少的代码消耗更好的时间产生更少的 bug并且容易修改复杂业务都是由简单代码堆砌而成完美并不是“没有什么东西可以再加”而是“没有什么东西可以被去掉”YAGNIYAGNI 代表“you arent gonna need it.”不要自以为是的提前实现某些边角直到真正需要的时候再来做。提前做明天才需要做的工作意味着当前迭代中需要花费更多精力导致代码膨胀软件变得臃肿且复杂Separation of Concerns关注点分离是一种将计算机程序分为不同部分的设计原则这样每个部分都可以解决一个单独的关注点。例如应用程序的业务逻辑是一个问题而用户界面是另外一个问题更改用户界面不应要求更改业务逻辑反之亦然。简化应用程序的开发和维护如果关注点分离得很好则各个部分可以重复使用也可以独立开发和更新。Interface Segregation Principle接口隔离将胖接口修改为多个小接口调用接口的代码应该比实现接口的代码更依赖于接口。why如果一个类实现了胖接口的所有方法(部分方法在某次调用时并不需要),那么在该次调用时我们就会发现此时出现了(部分并不需要的方法)而并没有机制告诉我们我们现在不应该使用这部分方法。how: 避免胖接口类永远不必实现违反单一职责原则的接口。可以根据实际多职责划分为多接口类实现多接口后 在调用时以特定接口指代对象这样这个对象只能体现特定接口的方法以此体现接口隔离。 public interface IA{void getA();}interface IB{void getB();}public class Test : IA, IB{public string Field { get; set; }public void getA(){throw new NotImplementedException();}public void getB(){throw new NotImplementedException();}}class Program{static void Main(string[] args){Console.WriteLine(Hello World!);IA a new Test();a.getA(); // 在这个调用处只能看到接口IA的方法 接口隔离}}
Command Query Separation命令查询分离: 操作方法就只写操作逻辑查询方法就只写查询逻辑并以明显的方法名区分自己的动作。有了这个原则程序员可以更加自信地进行编码:由于查询方法不会改变状态因此可以在任何地方以任何顺序使用使用操作方法时也心中有数。End懂得这么多道理却依旧过不好这一生。前人总结的编程原则和方法论需要在实践中感悟束之高阁则始终不能体会编程的魅力和快感。