第3条:一个实体应该有一个紧凑的职责

一次只解决一个问题:只给一个实体(变量,类,函数,模块,库,名字空间)赋予一个定义良好的职责,随着实体的扩大,其职责范围一会扩大,但是职责不应该发散;如果一个实体有几个不同的目的,那么使用起来难度会剧增,因为这种实体除了可以增加理解难度,复杂性和各部分的出错,还会导致其他的问题。这种实体不仅大,而且难以维护。具有多个功能的实体通常是难以设计和实现的,多个职责通常意味着多种性格。应该选择小而目标单一的函数和类,以及边界清晰的紧凑模块。

例如:basic_string。在标准C++中,它是一个臭名昭著的设计。一个巨大的类设计,增加了太多“多多益善”的功能。最后成了“四不像”。

时间: 2024-08-02 10:56:31

第3条:一个实体应该有一个紧凑的职责的相关文章

一个接口能否继承另一个接口?一个抽象类能否实现一个接口?

都可以: 一.一个接口能否继承另一个接口? 接口继承接口  本质就是一个抽象类继承另一个抽象类(它们都没写方法的实例).当一个类继承了一个抽象类,它必须要重写父类 抽象类中的抽象方法,如果不去重写父类抽象方法的实例,那么这个类也是抽象类(这个抽象子类,直到重写这个抽象方法的实例为止, 才能摆脱抽象的命运).其实我们想想,一个类去实现一个接口也不就是一个实体子类把一个抽象的所以抽象方法实例化(重写了 抽象父类 中全部抽象方法),当然抽象类和接口还是有区别的.我上上篇就写到了抽象类和接口的区别,有兴

实体类作为另一个实体类的属性

如果一个实体类作为另一个实体类的属性,如果对该属性赋值的时候直接赋一个对象就行了,如果有多个对象同时赋给那个属性 就可以用List集合去接收,就像微信开发里面的图文消息 ,如果回复的是多条图文消息就用list集合去装t它们. 今天早上被技术总监说了一顿,就是他将很多种类都写在一个文件里面,而我一般都是将类写在一个单独的文件里面,我很奇怪这种写法.在QQ群里和人讨论了一下,觉得类应该是单独的建一个文件去写,这样不管是后期维护,还是查阅修改,都会很方便.还有一种所有实体类加partial.需要手动改

Asp.Net MVC学习记录之“一个实体对象不能由多个 IEntityChangeTracker 实例引用”

原文:浅谈 js 正则之 test 方法 其实我很少用这个,所以之前一直没注意这个问题,自从落叶那厮写了个变态的测试我才去看了下这东西.先来看个东西吧. ? 1 2 3 4 5 var re = /\d/; console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1") ); console.log( re.test("1"

OrmLite动态创建表,一个实体类创建多张表的的偏招

在做一个Android的项目,因为使用数据库频繁,实体字段也比较多,于是打算采用ORM框架,发现OrmLite还不错,于是下了下来,打算使用. 没想到还没正式开工,就遇到问题了.我现在的一个需求如下, 我有一个实体类如下,代表聊天消息,现在要做的是针对每一个当前用户(userId)对应一个朋友(friendId)都要创建一个表.需求比较蛋疼,我本来想的是直接在加两个字段就搞定的,但是我们老大说要分表.没办法只能分表. public class ChatMessage{ public ChatMe

Entity Framework 6 Recipes 2nd Edition(13-2)译 -> 用实体键获取一个单独的实体

问题 不管你用DBFirst,ModelFirst或是CodeFirst的方式,你想用实体键获取一个单独的实体.在本例中,我们用CodeFirst的方式. 解决方案 假设你有一个模型表示一个Painting(绘画)类型的实体,如Figure 13-2所示: Figure 13-2. The Painting entity type in our model 在代码In Listing 13-2,我们创建实体类Painting. public class Painting { public str

Entity Framework 6 Recipes 2nd Edition(10-1)译->非Code Frist方式返回一个实体集合

存储过程 存储过程一直存在于任何一种关系型数据库中,如微软的SQL Server.存储过程是包含在数据库中的一些代码,通常为数据执行一些操作,它能为数据密集型计算提高性能,也能执行一些为业务逻辑. 当你使用数据的时候,有时你会通过存储过程来获取它们. 在本章, 我们探讨一些EF在使用存储过程时,需要关注的地方.我们在本书的其它章节也使用了存储过程, 但通常都是context为执行插入.更新和删除动作. 在本章,我们将为你展示多种使用存储过程的方式. 10-1. 非Code Frist方式返回一个

提示13. 附加一个实体的简单方式

提示13. 附加一个实体的简单方式 问题: 在早先的一些提示中,我们讨论了使用Attach来加载一个处于未改变(unchanged)状态的东西到ObjectContext从而避免进行查询的开销. 如果性能是你的目标,Attach就是要选择的武器. 不幸的是我们的API不能适应99%的情况,即每个类型仅有一个实体集(entity set)的情况.Entity Framework支持单类型多实体集(Multiple Entity Sets perType)或称MEST,且API反映了这一点,要求你提

canvas-在画布中画两个方块(一个空心一个实体)

效果图: 代码: 1 <canvas id="c1" width="400" height="400" style="background-color:red"> 2 </canvas> 3 4 <script type="text/javascript"> 5 //获取画布元素 6 var canvas=document.getElementById("c1&

一个实体对象不能由多个 IEntityChangeTracker 实例引用。

错误代码 public bool addSubOptionItem(csModel.cs_Answer answers) { bool result = false; wpe = new csWeiPlatformEntities();//实例化entity对象 try { wpe.CreateObjectSet<cs_Answer>().AddObject(answers); wpe.SaveChanges(); result = true; } catch (Exception) { re