High Quality Coding

  几条面向对象课上介绍的高质量代码写作原则:

   1. Don‘t Repeat Yourself

不要重复你自己,重复代码,类似代码都是问题的隐患。程序员为了能够节省时间,喜欢复制现成的代码,稍加修改制作自己的调用的函数(方法),这种做法将会把原有的问题复制一份,修改的时候也要修改两份。重复代码的问题在诸多问题之中往往被列为首位。

2. Single Responsibility Principle
       单一职责原则。一个类只干与自己相关的事情,一个方法只做一件事情,一个变量只表达一个意思。如果违背这个原则,那么代码理解的速度就会降低。并且,调用的时候会由于名称的误导而导致重复调用、意外行为等不可预期的错误。而修改代码的时候也因为其职责过多而致使影响性变大,导致无从下手,或者不敢下手。

3. Open Closed Principle
       开放封闭原则,指的是代码对变更封闭,对扩展开放。当系统需要扩展的时候,可以通过派生子类或者重载函数的方式进行扩展,而无需修改原来的代码。这样做的好处是,当系统进行扩展的时候由于无需修改原来的代码,所以对原来系统的影响性也可以降到最小。

4. Liskov Substitute Principle

里氏代换原则。子类可以替代父类。这句话看似废话。但是实际上含义很深。比如经典的对面向对象技术的质疑话题:园非椭圆问题。即根据面向对象原则,园应该是椭圆的一个子类。但是当椭圆进行单轴拉伸的时候,圆无法做到这一点。实际上这违反了里氏代换原则。即圆是受限制的椭圆,圆无法继承椭圆所有行为和属性。所以,在面向对象课上老师爱用的例子:动物->狗这个例子也会有其谬误之处。动物在这里更应该是多个接口,而不是类,因为它不能保证所有的属性都会被所有的子类正确的继承。例如:

5. Interface Segregation Principle
         接口分离原则。一个接口只做一类事情,将无关的行为分离成为其他的接口。从而使得接口单元变小。则调用方只需要了解自己相关的几个接口就可以了,而无需了解那些与自己无关的接口。同时也避免了去访问那些它不应该访问的接口。

6. Dependency Inversion Principle

依赖倒置原则。有两层意思:访问依赖于抽象,不依赖于具体实现;实现依赖于抽象,抽象不依赖于实现。当调用方和实现都依赖于接口的时候,二者的耦合度就大为降低了。
      7. Law of Demeter

迪米特法则。也叫最少知识原则。即对象只需要了解那些它需要的属性,只访问那些和它关系最密切的对象。这样可以减少对象的外部依赖。但是,需要了解的是,迪米特法则会创建大量的中介类。

时间: 2024-11-23 15:54:00

High Quality Coding的相关文章

很好的iOS学习资料

https://github.com/vsouza/awesome-ios 汇集了很多好的资料 https://github.com/vsouza/awesome-ios Skip to content This repository Pull requests Issues Gist You don’t have any verified emails. We recommend verifying at least one email. Email verification helps ou

github上所有大于800 star OC框架

https://github.com/XCGit/awesome-objc-frameworks#awesome-objc-frameworks awesome-objc-frameworks ID Framework Images 1 AFNetworking/AFNetworking 19,058 A delightful iOS and OS X networking framework 2 rs/SDWebImage 10,139 Asynchronous image downloade

面向对象程序设计简介(2/2)

在 本教程的第一部分中,你学会了面向对象设计的基本概念:对象,继承以及模型-视图-控制器(MVC)模式.你初步完成了一个叫做 Vehicles 的程序,它帮助你更好的理解所学的这些概念.在这第二部分中,你将学习多态性以及其它一些面向对象编程的关键概念:类工厂方法和单例.如果你已经完成了本教程的前半部分,那就太好了!你可以在本教程中继续使用之前您所使用的工程.然而,如果你刚刚开始阅读本篇教程,你也可以从这里下载我们为你准备的第一部分完整工程. 多态性(Polymorphism) 关于多态的普通定义

ios程序猿攻城策略

这也是一个面向对象的问题,作为实例对象的你需要一步一步去攻城拔寨.待各处插满了自己的旗帜,回过头来,你会感谢一路走来的自己! 一.入门   面向对象编程基础(类和继承,变量和方法的作用域,MVC基本概念,分类) 方法和函数(消息,类定义和属性,与C/C++的混合编程) 内存管理(strong/weak, ARC自动引用计数,自动释放对象) 代码设计模式(Block块语句,Target/action,协议) UIKIT(视图层级,绘制事件,触摸事件,动画) 多媒体(配置,AVFoundation,

一个iOS开发者的修真之路

在微信上有童鞋问我iOS开发者的入门标准是神马?这个问题难到我了,而且贸然给一个答案出来的话,必定会有万千高手来喷. 凡人修仙,仙人修道,道人修真.当我们还是一个在青石板上蹲马步汗水涔涔的废柴时,或许天空中偶尔会有御剑飞行的仙人路过.金色的阳光洒在仙人随风舞动的剑穗上,此时不禁会油然而生一种冲动,希望有一天能成为这样的高手,自由飞翔.只是路漫漫其修远兮,漫漫修真路,从一个后天废柴到羽化升仙成为大神需要太多的努力. 我个人还属于iOS开发的外门弟子,正在入门的门槛上,所以还是一起来看看iOS开发内

100 high quality blogs from java developers

This list collects 100 high quality blogs from Java developers from all over the world. Some of these blogs may not be written by Java developers, but at least Java developers should find it useful or interesting. Reading those blogs should be fun an

Top 6 Refactoring Patterns to Help You Score 80% in Code Quality

Top 6 Refactoring Patterns to Help You Score 80% in Code Quality Posted by Ajitesh Kumar / In Code Review, Software Quality / January 31, 2014 Have done several code reviews in past and found following top 5 code smells common across most of these co

Automate Your Coding Standard

Automate Your Coding Standard Filip van Laenen YOU'VE PROBABLY BEEN THERE, TOO. At the beginning of a project, every- body has lots of good intentions-call them "new project's resolutions." Quite often, many of these resolutions are written down

Ubuntu Coding for Your Friends

Ubuntu Coding for Your Friends Aslam Khan SO OFTEN, WE WRITE CODE IN ISOLATION and that code reflects our per- sonal interpretation of a problem, as well as a very personalized solution. We may be part of the team, yet we are isolated, as is the team