惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园_首页
Y
Y Combinator Blog
Engineering at Meta
Engineering at Meta
D
Docker
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
腾讯CDC
P
Proofpoint News Feed
A
About on SuperTechFans
WordPress大学
WordPress大学
Stack Overflow Blog
Stack Overflow Blog
Google DeepMind News
Google DeepMind News
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LangChain Blog
MyScale Blog
MyScale Blog
博客园 - 三生石上(FineUI控件)
Hugging Face - Blog
Hugging Face - Blog
Microsoft Azure Blog
Microsoft Azure Blog
N
Netflix TechBlog - Medium
G
Google Developers Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

博客园 - 生命体验之kevin-Y

windbg内存占用分析常用命令 如何让Trae IDE调用windbg来分析dump文件 Avalonia.Controls.DataGrid自动合并列 asp.net core如何实现Controller热更新 windbg无法分析dotnetframework3.5的dmp asp.net core通过配置决定AddSingleton的实现类 vscode指定python文件的执行程序 golang离线开发-windows-vscode go语言学习 - caddy配置的一些发现 go语言学习 - caddy添加nacos-gateway 学习jsp-使用IDEA2024社区版 ravendb源代码学习一:服务启动 修整程序集需要 .NET Core 3.0 或更高版本。 打开电脑后一直弹出“交互式检测服务”窗口 Idea2024-java-Maven开发配置 C#获取事件绑定的方法 java.util.zip.DataFormatException: incorrect header check Build Secure Web Services With SOAP Headers and Extensions “System.Net.Http.HttpContent”不包含“ReadAsAsync”的定义 C#入门:如何合理制定方法参数-下 拷贝对象的开源工具类-FastMapper-TinyMapper-Mapster
C#入门:如何合理制定方法参数-上
生命体验之kevin-Y · 2023-10-27 · via 博客园 - 生命体验之kevin-Y

1、利用面向对象的原则,将我们面对的功能拆分出相关对象

2、相同功能只应出现在一个类中。

3、相似功能尽量提取其公共部分

总的目标简单来说就是:精减代码量。

我们以一个动态条件查询界面来说明一下上面几点

 这是一个病案查询功能,左则的列表是所有可供选择的字段,中间是用户要求查询的字段,右侧的某一个查询字段的条件。

组织这个界面功能要用到哪几个类呢?

结果不是唯一的,每个人都可以有自己的想法。但我认为,组织一个更多人容易理解的方式应该是我们的目标。

首先浮现我们脑子的,应该是两个对象:所有的字段字段查询范围

研究一下所有字段的规则,更多时候应该跟客户面对面的聊。我们发现部分字段使用相同的查询范围录入界面。
所以这里似乎隐藏了一个字段类型。就是某一类的字段的行为是一致的,界面录入、条件生成等行为是一致的。

字段查询范围、字段类型都很容易让人想到这两个是字段的属性,而不是构造主要元素的功能对象。

是的,从名字来看就很容易让人迷惑。但如果我将名字换成“查询范围”、“行为控制器”,你可能会明白我的用意。

三个对象:字段、查询范围、行为控制器

左侧显示就是所有“字段”,中午显示的是所有的“查询范围”,行为控制器必然是一个接口,让主程序可以优雅的处理所有类型的字段。

 上图是中间查询范围选中事件的代码,这个主程序就能应对N种字段的显示。

本文只发布在博客园,未经同意请勿转载!