记录---从0823开始

----规范-----------
读书笔记:

第一章 整洁代码
1,整洁代码力求集中,每个函数、每个类和每个模块都全神贯注于一件事。
2,整洁代码简单直接,从不隐藏设计者的意图。
3,整洁代码应当有单元测试和验收测试。它使用有意义的命名,代码通过其字面表达含义。
4,消除重复代码,提高代码表达力。
5,时时保持代码整洁。
第二章 有意义的命名
1,使用体现本意的命名能让人更容易理解和修改代码。
2,编程本来就是一种社会活动。
3,尽力写出易于理解的代码
第三章 函数
1,一个函数应该只做一件事(高内聚),无副作用。
2,自顶向下阅读代码,如同是在阅读报刊文章。
3,长而具有描述性的函数名称,好过描述性的长注释。
4,使用异常代替返回错误码,错误处理代码就能从主路径代码中分离出来得到简化。
5,写代码很像是写文章。先想怎么写就怎么写,然后再打磨:分解函数、修改名称、消除重复。
6,编程其实是一门语言设计艺术,大师级程序员把程序系统当做故事来讲。使用准确、清晰、富有表达力的代码来帮助你讲故事。
第四章 注释
1,别给糟糕的代码加注释----重写吧。
2,把力气花在写清楚明白的代码上,直接保证无需编写注释。
第五章 格式
1,代码格式很重要。代码格式关乎沟通,而沟通是专业开发者的头等大事。
2,向报纸格式学习代码编写。
第六章 对象和数据结构
1,对象把数据隐藏于抽象之后,只提供操作数据的函数。数据结构暴露其数据,没有提供有意义的函数。
2,The Law of Demeter:模块不应去了解它所操作的对象内部细节。
第七章 错误处理
1, 使用异常而非返回错误码。
2, try-catch-finally, log出错信息。
3, 不要返回null,不要传递null。NULL Object模式, 例:Collections.emptyList();
第十章 类
1,自顶向下原则:让程序读起来就像是一篇报纸文章。
2,method可以是protected,以便于单元测试。
3,SRP:类或模块应有且仅有一个加以修改的原因。类名应准确描述其职责。高内聚。
4,开放闭合原则、依赖倒置原则。
5,变量名、方法名、类名都是给代码添加注释的一种手段。
第十二章 迭代前进
1,紧耦合的代码难以编写单元测试。
2,单元测试消除了对清理代码会破坏代码的恐惧。
3,写出自己能理解的代码很容易,软件项目的主要成本在于长期维护。
4,代码应当清晰表达其作者的意图;测试代码可以通过实例起到文档作用。
第十四章 逐步改进
1,编程是一种技艺。要编写整洁代码,必须先容忍脏代码,然后清理!
2,写出好文章就是一个逐步改进的过程。
----
一个优秀的程序员,在接到一个要编写“毁灭地球”的任务的时候,他不会简单的写一个destroyEarth()的方法;而是会写一个destroyPlanet()的方法,将earth作为一个参数传进去。
-------------------

--2824-

1.尽量把属性初始化放到构造函数中,浅记sqlserver中&。 if @i & 4 = 4 指的是判断@i是否在[4,7]之间

2.多考虑前瞻性。代码中未来是否会有产生变化的地方。

--------

--0825--

1.甩锅,只完成类内部的人物,怎么甩锅,使用依赖

2.稍后等于永不

--------

--0827 整洁代码具有的特征

1.能通过所有测试

2没有重复代码

3体现系统中的全部设计理念

4包括尽量少的实体,比如类,方法,函数

废话都是冗余,Variable永远不应该出现在变量名中

策略模式:把使用的策略传入到context中。注意和工厂模式的结合。

--0828------

1.抽离try/catch代码块,try/catch都是丑陋不堪的,他们搞乱了代码结构。

把错误处理和正常流程混为一谈,

 

只写一个try/catch.

 

 --注释

 

 --格式

 

 

--

1.策略模式跟状态模式不同点在于,策略模式的决定权是在客户端

  而状态模式的决定权是在当前事务的状态决定,比如订单状态,对应的有订单创建-订单支付-配送-完成-取消 等。

复制代码
  public class WorkStateContext
    {
        public double CurrentDayOfHours { get; set; }
        public AbstractState abstractState { get; set; }
        public void SetWorkState(AbstractState state)
        {
            this.abstractState = state;
        }
        public void Working() 
        {
            abstractState.Working(this);//传入自己。
        }
    }
复制代码
复制代码
public abstract class AbstractState
{
        public abstract void Working(WorkStateContext context);
}

public class ForenoonState : AbstractState
    {
        public override void Working(WorkStateContext context)
        {
            if (context.CurrentDayOfHours > 9 && context.CurrentDayOfHours < 13)
            {
                Console.WriteLine("上午上班,精力充沛");
            }
            else
            {
                context.SetWorkState(new EveningState());
                context.Working();
            }
        }
    }
复制代码

客户端只需要创建WorkStateContext,修改CurrentDayOfHours即可

责任链模式--由客户端确定上下级关系。

 

posted @   vba是最好的语言  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
历史上的今天:
2021-08-23 c# 设计模式-单一原则
点击右上角即可分享
微信分享提示