代码整洁之道-对象和数据结构(代码片段)

烟草的香味 烟草的香味     2022-12-23     579

关键词:

现在,有一个计算面积的需求,其中一种实现如下:

class Square
    public $side;

class Geometry
    public function area($shape)
        if($shape instanceof Square)
            return $shape->side * $shape->side;
        
        return 0;
    

 

有人看了,你这抽象的有问题啊,很明显是面向过程的,如果新加一个类型,Geometry类中的所有方法都要修改。嗯,却是是这样,但反过来想,如果新加一个方法,所有现有的形状类都不用动,只要在Geometry类中添加方法就行了。

当然了,还有一种多态的实现方式:

class Square implements Shape
    private $side;
    public function area()
        return $this->side * $this->side;
    

 

你以为这样就万事大吉了?并没有。确实这样实现,添加新的类型,只要新鞋一个类实现方法即可,很简单。但是如果要添加一个新的函数,那不好意思,所有的类都要进行修改。

简单总结下,就是说:

  • 过程式代码便于在不改动现由数据结构的前提下添加新的函数,面向对象便于在不改动现由函数的前提先添加新的类型
  • 过程式代码难以添加新的数据结构,因为必须修改所有函数。面向对象代码难以添加新函数,因为必须修改所有类
  • 对象暴露行为,隐藏数据。便于添加新的数据类型而无需修改现有行为,同时也难以在现有对象中添加新的行为
  • 数据结构(上面的第一种实现)暴露数据,没有明显的行为。便于向现有数据结构添加新行为,同时也难以向现有函数添加新的数据结构。

当然,具体使用哪一种还是应该灵活选择,不必拘泥。

如果希望灵活添加新行为,就使用数据结构的方式。如果希望灵活添加新类型,就使用面向对象的方式。

整洁架构之道--三种经典的编程范式(代码片段)

本文是《CleanArchitecture》--整洁架构之道中关于编程范式相关章节的笔记,首发于公众号「Go招聘」这和软件架构的三大关注重点不谋而合:功能性、组件独立性以及数据管理。的方式。回答此问题的同时另外还会搬出这三个词语... 查看详情

读c#代码整洁之道笔记02_类对象和数据结构及编写整洁函数

1. 组织类1.1. 每一个接口、类、结构体和枚举均应当拥有其自身的独立源文件1.2. Pascal命名方法命名命名空间1.3. 测试类定义在独立的程序集1.3.1. 不同程序集的测试放在不同程序集1.3.2. 程序集名称的最后附... 查看详情

代码整洁之道读书笔记

...是对意图的解释,但好的代码可以替代注释6.对象和数据结构6.1.过程式代码难以添加新的数据结构6.2.面向对象代码难以添加新函数6.3.得墨忒定律6.3.1.对象不应该了解对象内部的结构,即火车式调用obj.a().b().c()1  查看详情

代码整洁之道读书笔记

...是对意图的解释,但好的代码可以替代注释6.对象和数据结构6.1.过程式代码难以添加新的数据结构6.2.面向对象代码难以添加新函数6.3.得墨忒定律6.3.1.对象不应该了解对象内部的结构,即火车式调用obj.a().b().c()1  查看详情

代码整洁之道读书笔记(ch4-ch7)(代码片段)

这几章从注释、程序格式、对象与数据结构的规范以及错误处理四个方面介绍了如何使代码变得简洁易懂。不同于上次摘抄的方法,这一次我会结合第一次个人作业的代码进行分析。第四章 注释这一章告诉我们,好的注释要... 查看详情

代码整洁之道(代码片段)

...可见命名。我们给变量、函数、参数、类和封包命名、源代码文件命名、目录命名,良好的命名规范使得代码以及工程的维护难度大大降低,下面列出良好命名的几条简单规则。1.名副其实变量、函数或类的名称应该已经... 查看详情

《代码整洁之道》

代码整洁之道代码猴子(CodeMonkey):低水平编码者.童子军规.技艺(craftsmanship):知和行.学写整洁代码,掌握原则和模式,并付出行动.整洁代码代码呈现了需求的细节.这些细节无法被忽略或抽象,必须要严谨,精确,规范和详细.糟糕的代码... 查看详情

15个书写javascript代码的整洁之道(实用!)(代码片段)

...论你是React开发者还是Node.js开发者.都能写出可以运行的代码.但是你写的代码美观并且别人能看懂吗?下面的规则可以让你的JavaScript代码更加整洁和清晰.规则1.不要使用随机的字符 查看详情

读《cleancode代码整洁之道》之感悟(代码片段)

盲目自信,自认为已经敲了几年代码,还看什么整洁之道啊。我那可爱的书架读懂了我的心思,很明事理的保护起来这本小可爱,未曾让它与我牵手最近项目中的bug有点多,改动代码十分吃力,每看一行代码都带一句“这是什么... 查看详情

代码整洁之道(代码片段)

有意义的命名1名副其实2避免误导3做有意义的分区废话都是冗余。Variable永远不应出现在变量名中,Table一词永远不应出现在表名中。当缺少明确约定:变量moneyAmout与money没区别,customerInfo与customer没区别,accountData与account没区别... 查看详情

代码整洁之道(代码片段)

有意义的命名1名副其实2避免误导3做有意义的分区废话都是冗余。Variable永远不应出现在变量名中,Table一词永远不应出现在表名中。当缺少明确约定:变量moneyAmout与money没区别,customerInfo与customer没区别,accountData与account没区别... 查看详情

代码整洁之道——4类

一、优先使用ES6语法的类而不是ES5的纯函数传统的ES5类语法很难拥有类的继承、构造函数和方法的定义。如果你需要使用继承(要注意的是,你可能不需要),那么就用ES2015/ES6的类。但是,在你发现你需要更大更复杂的对象的... 查看详情

typescript代码整洁之道

干净整洁的代码,不但质量更可靠,也为后期升级、维护打下了良好的基础。那么,整洁代码的衡量标准是什么?本文将RobertC.Martin的CleanCode思想融入到TypeScript,一起探讨研究代码整洁之道。 WTFs/Minute 1.命名的艺术计算... 查看详情

代码整洁之道读书笔记

代码整洁之道 前言如何用功 阅读大量代码 找优点和缺点第一章整洁代码不要留到以后,稍后等于永不烂代码影响生产力代码整洁性不但有关效率,还有关生存好代码 C++之父  尽量减少依赖关系,便于维护... 查看详情

php整洁之道(代码片段)

摘录自RobertC.Martin的CleanCode书中的软件工程师的原则,适用于PHP。这不是风格指南。这是一个关于开发可读、可复用并且可重构的PHP软件指南。并不是这里所有的原则都得遵循,甚至很少的能被普遍接受。这些虽然只是指导,但是... 查看详情

代码整洁之道(cleancode)读后感(代码片段)

第二次读代码整洁之道(CleanCode)了,在少许开发经验加持下,没有第一次那么晦涩后,整体对本书也有了共鸣,这本书应该作为指导手册,平时可以多翻一翻,说不定会有新的不同感悟,当然... 查看详情

代码整洁之道(代码片段)

...可见命名。我们给变量、函数、参数、类和封包命名、源代码文件命名、目录命名,良好的命名规范使得代码以及工程的维护难度大大降低,下面列出良好命名的几条简单规则。1.名副其实变量、函数或类的名称应该已经... 查看详情

php开发-代码整洁之道(代码片段)

CleanCodePHP目录介绍变量使用见字知意的变量名同一个实体要用相同的变量名使用便于搜索的名称(part1)使用便于搜索的名称(part2)使用自解释型变量避免深层嵌套,尽早返回(part1)避免深层嵌套,尽早返回(part2)少用无意义的变量名... 查看详情