-
在 Other Versions - ReSharper 上下载2022.x到2024.x之间的版本,推荐下载最新的。本教程写时最新的为2024.2.
-
安装或更新 ReSharper
安装之前请先关闭所有正在运行的 VS 。之前安装过,就直接选择更新就行。没安装的为
Install
选项。ReSharper 是 C# 的辅助开发工具,ReSharper C++ 是 C++ 的辅助开发工具,推荐两个都安装。 -
下载破解工具并解压
以管理员身份运行 Patcher.exe .
-
安装成功
打开 VS 之后,依次选择
扩展
->ReSharper
->Help
->License Information...
,弹出窗口与下图的 License information 一致即可。
语法
C# 中的按值和按引用传递
按值传递给函数时,变量传递的是副本;按引用传递给函数时,变量传递的是本身。
按值传递[1]
- 整数类型(如 int、long、short)、
- 浮点数类型(如 float、double、decimal)、
- 布尔类型(bool)、
- 字符型(char)、
- 枚举类型(enum)、
- 结构类型(struct)。
软件行为由领域模型控制。只要将领域逻辑与技术问题相隔离,就能实现模型驱动设计,从而实现领域驱动设计。
领域模型实现模式分为领域模型、事务脚本、表模块。
领域模型
事务脚本
事务脚本模式遵循开发的程序化风格而非面向对象方法。通常会为每个业务事务创建单个程序,并且它是按照某种静态管理器或服务类来分组的。每个程序都包含所有需要的业务逻辑,以完成从工作流、业务规则和验证检查到数据库中持久性的业务事务。
即事务脚本将事务封装成一个个的脚本,是面向过程的。它可用于领域中具有很少逻辑或不具有逻辑的部分。一个操作的所有逻辑都包含在单个服务方法中。
项目开发规范
类设计
最佳实践
-
类是暴露抽象最优先的选择。因为接口一旦发布,其成员将永远固定。所以要优先定义类而不是接口。
-
要用抽象类而不是用接口来解除契约与实现之间的耦合,除非接口永不变[1]。
-
一个接口只做一件事情。
-
通过接口来实现多重继承,但要避免记号接口(没有成员的接口)[2]。
-
仅把最长的重载成员定义成重载成员中唯一的虚成员,而较短的重载只是调用一下较长的重载。
public class String{ public int Indexof(string s){ return Indexof(s,0); } public int Indexof(string s,int startIndex){ return Indexof(s,startIndex,s.Length); } public virtual int Indexof(string s,int startIndex,int count){ //do real work here } }
DDD(领域驱动开发)
软件的层级
大部分程序都是多层架构,一般为三层:
- 表示层:负责把数据展示出来,提供与业务逻辑层的交互命令。
- 业务逻辑层:实现具体的业务逻辑,经常与数据交互还会划分一个数据访问层(Data Access Layer,DAL)。
- 数据层
WPF(Windows Presentation Foundation)用于表示层开发。
领域驱动设计 DDD 在 B 端营销系统的实践
前端需求梳理流程
六个梳理需求的步骤:
功能梳理
流程设计
每个流程图只对一个模块的工作思路,应分为正常流程和异常流程。
完善细节
-
需求的基本信息
需求目的,迭代记录
-
模块的具体信息
输入条件考虑,数据组织方式,交互效果
-
其他辅助信息
名称解释
处理任务的方式
我养成了这样的习惯,把我想在以后几个小时之内完成的任何事情都记录在电脑旁的一张纸上。我还有一张这样的请单,我把它钉在墙上,不过这张单子是这一周或者这个月的工作计划。一旦把所有要完成的事情都写在清单上,我就知道我是不会忘记去做这些事情了。当又有新条目出现时,我会迅速而有意识地判断这个条目是属于“现在的”清单还是“以后的”清单,还是它根本就不需要去做。
将其运用到测试驱动开发上,那么我们记录到列表上的就是我们要去实现的测试。首先,把你所知道需要实现的每种操作的范例都记录在清单上,其次,对于那些目前还不存在的操作,将其空(null)版本记录到清单上。最后,列出所有你认为在这一轮编程结束后为了获得整洁的代码而必须要完成的重构。
图
- 自环,即一条连接一个顶点和其自身的边;
- 连接同一对顶点的两条边称为平行边;
- 含有平行边的图称为多重图;
- 没有平行边或自环的图称为简单图。
广度优先搜索用于在非加权图中查找最短路径。
狄克斯特拉算法用于在权重为正的加权图中查找最短路径,权重为负的用贝尔曼-福德算法(Bellman-Ford algorithm)。
无向图
解决的问题
问题 | 解决方法 | 参阅 |
---|---|---|
单点连通性 | DepthFirstSearch | 4.1.3.2 节 |
单点路径 | DepthFirstPaths | 算法 4.1 |
单点最短路径 | BreadthFirstPaths | 算法 4.2 |
连通性 | CC | 算法 4.3 |
检测环 | Cycle | 表 4.1.7 |
面向对象方法与统一建模语言
现代面向对象分析和设计过程中都综合使用了用例建模、静态建模、状态机建模和对象交互建模。
用例建模:系统的功能性需求按照用例和参与者进行定义。
静态建模:提供系统的结构化视图。类按照其属性以及与其他类的关系进行定义。
对象交互建模:通过对象交互图显示对象之间是如何通信以实现用例。
状态机建模:通过状态图表示系统的相关状态及关系。
方法和表示法
软件设计表示法:使用图形或文本方式或同时使用图形和文本描述软件设计的方法。
软件设计思想:用于设计系统的根本性的思想。