精华内容
下载资源
问答
  • 该存储库存储与我的个人conlang(尚未命名)(构造语言的缩写)相关联的数据和脚本。 这个项目有几个目的。 加快数字和传统笔记的速度在书写笔记的同时翻译笔记的假设也可能有助于理解和保留 当我更深入地学习自然...
  • 标准化有好几种形式,但Third Normal Form(3NF)通常被认为在性能、扩展和数据完整方面达到了最好平衡。简单来说,遵守3NF 标准的数据库的表设计原则是:“One Fact in One Place”即某个表只包括其本身基本的...
  • 3个基础原则 4个扩展性原则 3个完备性原则 3个基础原则 结构清晰:表名、字段命名没有歧义,能一眼看懂 唯一职责:一表一用,领域定义清晰,不存储无关信息,相关数据在一张表中 主键原则:设计不带物理意义的主键;有唯一...

    企业级数据库设计十原则

    3个基础原则 4个扩展性原则 3个完备性原则

    3个基础原则

    • 结构清晰:表名、字段命名没有歧义,能一眼看懂
    • 唯一职责:一表一用,领域定义清晰,不存储无关信息,相关数据在一张表中
    • 主键原则:设计不带物理意义的主键;有唯一约束,确保幂等

    4个扩展性原则(影响系统的性能和容量)

    • 长短分离:可以扩展,长文本独立存储;有合适的容量设计
    • 冷热分离:当前数据与历史数据分离
    • 索引完备:有合适索引方便查询
    • 不使用关联查询:不使用一切的 SQLJoin 操作,不做2个表或者更多表的关联查询

    示例:查询商家每一个订单的金额

    select s.shop_name, o.id as order_id, o.total_amount from shop s, order o where s.id = o.shop_id
    

    3个完备性原则

    • 完整性:保证数据的准确性和完整性,重要的内容都有记录
    • 可追溯:可追溯创建时间,修改时间,可以逻辑删除
    • 一致性原则:数据之间保持一致,尽可能避免同样的数据存储在不同表中
    展开全文
  • 现有业务逻辑、依赖与关联分析清楚 对于一些不合理的业务逻辑要从技术的角度去引导需求,达到业务需求与技术的平衡 重构之后运行所有测试,确保第1点正常或者在预期范围内 代码尽量清楚地表达程序员意图(注释、...

    基本原则:

    1. 现有业务逻辑、依赖与关联分析清楚
    2. 对于一些不合理的业务逻辑要从技术的角度去引导需求,达到业务需求与技术的平衡
    3. 重构之后运行所有测试,确保第1点正常或者在预期范围内
    4. 代码尽量清楚地表达程序员意图(注释、逻辑清晰以及命名规范等)

    注:重要性从上往下

    代码重构主要关注的点:

    1. OO (面向对象的三大基本原则)
    2. SRP (权责单一,类只有一条被修改的理由)
    3. DYR (没有重复代码)
    4. OCP (开闭原则,类对扩展开放,对修改关闭)
    5. DIP (依赖倒置)
    6. LKP (最少知识原则,类与类之间的耦合最低)

    代码部分动手基本思路:

    前提是基本原则中的第1、2点 , 评审过后才能对代码动手:

    从需要重构的方法开始,依据SRP细分函数功能.再根据SPR原则分离为不同的类.
    如果类之间存在依赖关系,而且被依赖的类以后可能被修改,则用依赖倒置原则,抽象出接口或抽象类。

    1. 从修改命名入手
    2. 函数应该短小,逻辑清晰,只做一件事,并做好这件事(SRP)
    3. 业务逻辑的重构
    4. 异常处理重构,系统异常与业务异常分离,类型安全,异常处理的时间点等
    5. 检查类的设计, 主要是OO, 高内聚低耦合、开闭原则、DIP、操作类与数据实体类的分离等

    单元测试

    单元测试基本流程:BUILD(构造数据) - OPERATE(操作) - CHECK(验证)
    单元测试的first原则如下:
    1.F fast 快
    2.I Independent 独立
    3.R repeat 可重复
    4.S self-validate 自我验证
    5.T Timely 及时编写

    性能测试:

    帮助开发人员了解重构的效果,检查重构方案的存在的不足,尽早发现和解决问题。

     

    转载于:https://www.cnblogs.com/DanielChow/archive/2013/01/29/2881452.html

    展开全文
  •  关键业务词汇会涉及到工程中很多地方如:解决方案名、项目名、模块及子模块目录、类文件、表格名、关键字段、实体类、变量命名关联查询等诸多地方。所以定义好关键业务词汇表,是非常重要的事,它反应出我们对...

    1.1      关键业务词汇的设计问题

    1.     关键业务词汇会涉及到工程中很多地方如:解决方案名、项目名、模块及子模块目录、类文件、表格名、关键字段、实体类、变量命名、关联查询等诸多地方。所以定义好关键业务词汇表,是非常重要的事,它反应出我们对业务理解的程度以及对这种理解程度表达的准确度,是项目中具有决定性战略意义的重要一环。

    2.     关键业务词汇,最好以一张表,以模块为中心来展现,并列出简称和全称,然后对团队成员进行讲解,解释为什么用这些词汇。而不是个人做列表就作为标准,这样有利于更加准确的表达业务词汇。关键词汇的确立,应该和有兴趣关心这方面问题的成员进行沟通,对不太关心这方面问题的成员,不宜沟通,以避免沟通流于形式。

    1.2      数据表字段设计的建议

    1.     对于关键性的字段最好冠以业务关键词的前缀,对什么样的字段要写前缀应慎重考虑。既要考虑不加前缀在表关联查询时引起混乱,又要避免滥加前缀让数据字段显得过于冗长。我个人认为,解决好字段命名,最关键是缩写取得比较优雅自然。一般来说对字段级的命名采用缩写,对类级及以上的关键业务词汇采用全称。

    2.  对字段排列,建议尽量按如下顺序排列:

    Ø  优先按业务逻辑排序

    Ø  辅助性字段往后排

    Ø  关联字段往后排列

    Ø  总体观察排列是否自然,尽量调得比较自然

    Ø  实体类的排列顺序尽量与数据表的排列保持相对一致

    Ø  对于日期,布尔类型的字段尽量采用字符类型

     

    1.3      从“编程”角度考量数据字段具有的重要特性

    经过对编程过程的分析,我们认为对数据字段以下几个方面的特性要重点考量:

    1.            决定表现控件的特性:

    Ø    业务特性

    Ø    数据类型

    Ø    数据是输入还是选择

    Ø    选择列表还应考虑其它几个特性:

    a)            这个列表是固定的列表,还是可变列表?

    b)           这个列表是简单的列表还是复杂列表,数据量有多大?

    之所以从这些方面进行考虑,是因为编码时,一般情况下首先要进行界面布局,在布局的过程中要选取控件,而这与字段的业务特性、数据类型、是否选择都有一定关系,如果分析没有提供这些特性,在编程阶段必然要解决这些问题,由此而引起的资源开销相当大,而根据经验,我们认为这些特性在需求分析阶段完成更合适(注:这并不是说要由需求人员来做,可以让程序员参与这个阶段)

    2.            决定验证规则的特性:

    Ø 是必输的,还是可输的

    Ø 是否有输入限制:数字的范围、字符的格式等

    Ø 是否需要复杂验证

    这些特性,可以对数据输入的精确性产生一定的积极效果,但在实际运作过程中,我们可以在第一阶段完成后,再来补充完善这些规则,并完成相关的代码。不过,无论是管理人员,编程人员,还是测试人员,都应检查这些特性是否基本做到位?是否有不合适的地方?每个角色对这些特性进行检查完善,会比在制度上完全规定由某人来做合适。实际运作可以在第一阶段完成后,由程序员部分完成这些特性的定义,然后必须或者有必要与客户沟通的部分,再以“问题”的形式交由分析人员去与客户沟通。之所以这样做,我们认为负责与客户沟通的人员遇到突发性事件的机率比程序员要大,并且其工作任务难以变更,所以需要留出相当的机动时间,自行安排。而程序员的工作相对来说要求比较专一,不应太杂,他们的工作需要精细化,而这类事是程序员应该相对擅长的,与所做的模块属同一类事。同时,程序员的任务如果无法完成,将部分任务变更由另外的程序员来做相对容易一些。

    3.            决定控件事件的特性

    是否需要在控件产生事件时对外部提供回调。以及这些回调事件的相关业务意义是否值得这么做。

     

     

    展开全文
  • 亲密性原则是指:内涵相关联的内容,在结构、关系上也应保持关联。 以软件设计的角度来说,一项业务所包含的功能、一个功能所包含的代码,应该在结构、关系上保持关联。例如把这些代码放到同一个包下、用同一套规则...

    亲密性

            亲密性原则是指:内涵相关联的内容,在结构、关系上也应保持关联。
            以软件设计的角度来说,一项业务所包含的功能、一个功能所包含的代码,应该在结构、关系上保持关联。例如把这些代码放到同一个包下、用同一套规则来命名。这样,当我们需要查阅、修改这个功能,需要处理哪些代码就“一望而知”了。
            很明显,“亲密性”实际上就是软件工程中常说的“高内聚”。“高内聚”之于软件工程,就如空气之于人一样:重要,却常常被忽视。最常见的一种忽视“高内聚”原则而产生的bad smell,就是不通过继承或组合的方式来新增业务逻辑,而是在原有代码中用if-else/switch-case等方式来扩展。这样一来,新功能的代码就无法放到新功能的“群组”内,进而,在查阅、修改新功能的代码时,无法“一望而知”工作范围、也无法“一望而知”风险范围。
            当然,上面的bad smell也可以说是违反了“低耦合”原则导致的。但是必须承认,违反了“高内聚”,则一定会违反“低耦合”。例如,操作Ecxel文件的Service类,却把POI组件泄露到接口之外——这是Excel操作代码不够内聚的缘故;这同时也导致了调用方与POI组件发生耦合,从而违反“低耦合”原则。
            “低耦合”可以称为“私密性”原则,不过《写给大家看的设计书》中没有相关论述。这大概是因为,其它领域内的设计是为了充分表达自己的设计目标——要“一望而知”。而软件设计不仅要“一望而知”,还要“一望仅知”。只有这样,才能充分地拆分和管理复杂度。

    对齐

            “一望而知”各组件的内涵及范围,是“亲密性”原则的优点;而“一望而知”各组件之间的结构、关系,这是“对齐”原则带来的好处。标题对齐,“一望而知”全篇有几个标题;段落对齐,“一望而知”这个标题下有多少个段落。软件设计中会有这样的好事吗?
            我有一个很切身的体会,也是一个很好的例子:文件后缀命名。例如,某个接口类命名为AlphaService,那么它的所有子类都在接口名后面缀上说明性单词,以此构成自己的名字。如命名为AlphaServiceAsChain、AlphaServiceAsDispatcher、AlphaService4English、AlphaService4Chinense,诸如此类。这样,由于IDE和操作系统的文件系统、查询功能默认都是字母顺序排列,因而这一系列类在“展示”上就非常紧凑——这就使得它们的关系“一望而知”。
            “对齐”规则对现在的软件设计有很大的借鉴意义;规则如果执行得好,软件设计将会获益匪浅。这是因为,现代软件内部的逻辑复杂度一般都非常高。我们要通过设计来降低复杂度,一般只有一种办法:代码功能简单,而关系复杂。上面例子中提到的“接口-实现类”就是一种代码关系,而这种关系可以“一望而知”,这就是“对齐”原则给系统的裨益。
            当然,软件中“对齐”的方式还有很多。略牵强一点来讲,同一个接口下的实现类都是向接口“对齐”;同一个模板类下的子类都是向模板“对齐”;符合里氏替换原则的都算“对齐”;等等。

    重复

            “重复”对其它领域的设计工作来说,也许确实是非常重要的一项原则。运用这项原则,可以把设计意图更加有效地表达出来。
            但是,重复无疑是我们软件开发和设计人员最痛恨的:Don't Repeat Yourself! DON'T!!
            也许这是软件设计与其它领域设计的一个不同之处。软件设计不仅要考虑表达设计意图,还要管理系统复杂度。“一望仅知”是一种方式,DRY也是同样的考虑。

    对比

          设计中进行“对比”,一般是为了突出核心设计目的。对软件设计来说,“对比”原则参考意义不大。

    后记

          最近的技术思考和积累,关注点都不在代码或系统的细节上,而是转向了一些业务系统或逻辑的设计上。这跟我的技术价值观有关:技术的价值是需要体现在业务系统中的。不过这可以另外展开,这里打住。
          “设计”行业由来已久,建筑设计、时装设计、包装设计、城市规划设计、工业设计、平面设计……等等等等。这些设计门类都已经积累了很多经验,软件设计能否从中汲取一些营养呢?这也是我开始涉猎《写给大家看的设计书》的原因。
          这本书偏“平面”设计——海报、广告、传单等。其设计目标与软件设计有些出入,因此,亲密性、对齐、重复和对比这四个原则,有些确实值得借鉴,有些只能说看看就好。



    本文转自 斯然在天边 51CTO博客,原文链接:http://blog.51cto.com/winters1224/1967240,如需转载请自行联系原作者

    展开全文
  • 测试用例编写规范

    2021-03-23 10:51:37
    文章目录测试用例编写规范一、目的二、范围三、术语解释四、测试用例原则4.1 系统4.2连贯4.3全面4.4正确4.5符合正常业务惯性4.6仿真4.7可操作五、测试用例主要元素六、测试用例编写规范6.1常规的测试...
  • 1、命名很重要:变量名命名一定要跟其作用相关联,要有指向。例如:要记录某个角色的分数,那么就可以命名为“XX分数”。 2、单元测试:在代码量大了以后,如果新增代码进来,一定要做好“单元测试”,确保最起码...
  • 设计模式的本质是面向对象设计原则的实际运用,是对类的封装、继承和多态以及类的关联关系和组合关系的充分理解。 1、基本要素 模式名称,问题,解决方案,效果; 1. 模式名称 每一个模式都有自己的...
  • DDD-demo-源码

    2021-03-05 17:39:45
    关联代表(可阅读) 释义命名函数编译时发现问题(联系Java代码编译后特性,参数名编译后丢失) 数据验证和错误处理 DRY原则业务逻辑异常和数据校验异常被混在了一起 把数据验证的工作量初始到了调用方,而调用...
  • 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块,和代码的重复利用率。Python提供了许多内建函数,比如print()。我们也可以创建函数,即用户自定义函数。 一、定义...
  • 面向对象与UML资料

    2009-06-06 06:24:56
    关联命名 77 两个类型间的多重关联 77 关联和它的实现 77 例子:销售点问题中的关联 77 第六节 标识属性 78 属性的属性 78 有效的属性类型 78 非简单属性类型 78 识别属性 79 例子:销售点系统中的属性 79 术语表 ...
  •  有些时候不用OO还不行,互相关联的对象关系说不清,命名空间污染得得厉害。  但是C语言原生不支持class,继承,虚函数等的语法。参考了一些网上用C写OO的模板与教材,感觉太依赖于宏定义跟预处理了。继承起来很...
  • 10.6 关联原则 10.7 角色 10.8 关税的命名 10.9 两个类型间的多重关联 10.10 关联和它的实现 10.11 销售点问题域中的关联 10.11.1 在商店中不能被遗忘的一些关系 10.11.2 使用关联核对列表的分类 ...
  • 3.2.1 将DTD与XML文档相关联 3.2.2 基本标记声明 3.3 正式的DTD结构 3.3.1 实体 3.3.2 元素 3.3.3 属性 3.3.4 条件部分 3.4 DTD的缺点 3.5 用于图书目录问题的DTD 3.5.1 图书目录问题的正式定义 3.5.2 ...
  • 3.2.1 将DTD与XML文档相关联 3.2.2 基本标记声明 3.3 正式的DTD结构 3.3.1 实体 3.3.2 元素 3.3.3 属性 3.3.4 条件部分 3.4 DTD的缺点 3.5 用于图书目录问题的DTD 3.5.1 图书目录问题的正式定义 3.5.2 ...
  • C#本质论(第3版)

    2012-07-17 18:07:03
    11.2.4 类型参教命名的指导原则 11.2.5 泛型接口和struct 11.2.6 构造器和终结器的定义 11.2.7 默认值的指定 11.2.8 多个类型参数 11.2.9 元数 11.2.10 嵌套泛型类型 11.3 约束 11.3.1 接口约束 11.3.2 ...
  • Google C++ 编码规范

    热门讨论 2010-09-17 10:40:40
    缺点:命名空间具有迷惑,因为它们和类一样提供了额外的(可嵌套的)命名轴线。在头文件中使用不具名的空间容易违背C++的唯一定义原则(One Definition Rule (ODR))。 1) 不具名命名空间(Unnamed Namespaces)...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 10.6 如何为系统事件和操作命名 10.7 如何为涉及其他外部系统的SSD建模 10.8 SSD的哪些信息要放入词汇表中 10.9 示例:Monopoly SSD 10.10 过程:迭代和进化式SSD 10.11 历史和参考资料 第11章 操作契约 11.1...
  • 为什么要关心标签命名 106 各种各样的标签 111 作为情景式链接的标签 111 作为标题的标签 114 导航系统内的标签 116 标签作为索引词 118 标签的设计 121 通用原则 121 标签系统的来源 124 创建新的标签系统 129 优化...
  • 软件测试入门(必看)

    热门讨论 2010-08-07 17:38:15
    3.3.4 命名规范 18 3.4 BUG修补 18 3.5 开发人员的测试 18 四 软件测试的若干问题 19 4.1 前言 19 4.2 博弈的各方 19 4.3 测试的过程 20 4.4 测试所具备的素质 20 4.5 自动化测试 20 4.6 测试的误区 21 五...
  • 为什么要关心标签命名 106 各种各样的标签 111 作为情景式链接的标签 111 作为标题的标签 114 导航系统内的标签 116 标签作为索引词 118 标签的设计 121 通用原则 121 标签系统的来源 124 创建新的标签...

空空如也

空空如也

1 2 3 4 5 6
收藏数 106
精华内容 42
关键字:

关联性原则命名