4006-998-758
3000+课程任你选择
C#编程进阶
研发学院 C#编程进阶 开课时间:2025-12-19
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容

课程对象

有一定 C#/.NET 开发经验,希望提升代码质量与业务建模能力的开发人员 / 技术负责人

课程大纲

第一天:依赖注入、MVVM 与整洁代码基础上午(3h)

模块 1:依赖注入(Dependency Injection)原理与实战

目标:理解为什么要用DI、DI 和 DIP 的关系,并能在 .NET 中熟练使用DI 容器。

1、问题背景与设计动机

l  到处 new ” 带来的问题:难以测试、难以替换实现、难以扩展

l  高内聚、低耦合、解耦对象创建与使用

2、依赖倒置原则(DIP)与接口驱动设计

l  高层模块不应该依赖低层模块,而应共同依赖抽象

l  面向接口编程 vs 面向实现编程

l  用简单 C# 例子说明:从 new SqlOrderRepository() 到依赖 IOrderRepository

3、DI 的三种常见方式

l  构造函数注入(推荐)

l  属性注入/ 方法注入的适用场景与缺点

l  如何选择注入方式

4、NET 中的 DI 容器使用

l  IServiceCollection / IServiceProvider 基本机制

l  生命周期: Transient / Scoped / Singleton

l  在 ASP.NET Core / 控制台应用中注册与解析依赖示例

5、动手练习

l  将一份“硬编码 new 依赖”的示例服务,重构为

C#编程进阶(图1)  :定义接口

C#编程进阶(图1)  使用DI 容器进行注册和注入

l  分析重构前后的可测试性、可扩展性变化

 

下午(3h)模块 3:整洁代码与重构入门

目标:建立代码质量意识,学会识别坏味道并掌握基础重构技法。

1、什么是“整洁的代码”

l  可读性、可维护性、可扩展性

l  代码与架构的关系:先有好代码,才能有稳固架构

2、典型坏味道(Code Smell)识别

l  过长方法、过长类、神对象

l  命名混乱、重复代码、过深嵌套

l  业务逻辑和基础设施代码混在一起

3、命名与表达

l  类 / 方法 / 变量命名原则

l  如何通过命名使代码更接近业务语言

l  见名知意”与“上下文自解释”

4、常重构技法(C# 版本)

l  提取方法 / 内联方法

l  提取类 / 内联类

l  引入参数对象

l  卫语句、拆分复杂条件、消除嵌套

5、实战:整理段“烂代码”

l  提供一段真实感较强的 C# 业务代码

l  引导学员:

C#编程进阶(图1)  标注坏味道

C#编程进阶(图1)  讨论可能的重构方案

C#编程进阶(图1)  分步进行重构并对比前后差异

 

天:设计模式实践与领域驱动设计(DDD)

上午(3h)模块 4:设计模式与重构实践

目标:通过重构引入设计模式,提升复杂逻辑的可维护性,不做“为模式而模式”。

1、SOLID 原则快速回顾

l  SRP / OCP / LSP / ISP / DIP 简要解释

l  示例:订单处理 / 支付流程中的 SRP 和 OCP

2、从坏味道到模式:以策略模式为例

l  大量 if-else / switch 集中在一个方法里的问题

l  使用策略模式替代复杂条件逻辑的典型场景

l  C# 实现策略模式:

C#编程进阶(图1)  定义策略接口

C#编程进阶(图1)  多个具体策略类

C#编程进阶(图1)  上下文类如何通过 DI 注入策略

3、几个常设计模式在业务代码中的落地

l  Strategy:定价策略、折扣策略、路由策略等

l  Factory / Abstract Factory:隐藏对象创建细节

l  Adapter:对接第三方服务或旧系统时的适配

l  Template Method:统一处理流程,开放差异点

4、测试与模式

l  设计模式如何帮助更易于单元测试

l  使用接口和依赖注入,让测试替换实现变得简单

5、实战:由需求出发设计模式

l  给出一个业务需求(例如:多种运费计算方式 / 多渠道支付)

l  学员分组讨论:

C#编程进阶(图1)  用简单方式实现会遇到什么问题?

C#编程进阶(图1)  如何用策略模式 + DI 组合进行重构?

l  各组展示方案与代码片段

 

下午(3h)模块 5:领域驱动设计(DDD)原理与实践

目标:理解 DDD 的核心概念,能在中等规模的业务中尝试用DDD 思想进行建模。

1、为什么需要 DDD

l  系统变复杂时,单纯“加类、加 Service”为什么不再有效

l  DDD 关注点:用领域模型对齐业务与代码

2、领域 / 域 / 限界上下

l  业务领域与子域拆分:核心域、通用域、支撑域

l  限界上下文(Bounded Context):为什么不能全系统共用一个模型

l  示例:

C#编程进阶(图1)  电商:下单、库存、支付、结算

C#编程进阶(图1)  或 项目管理:任务、资源、排期、结算

3、通(Ubiquitous Language)与代码

l  与领域专家一起定义术语

l  将通用语言映射为 C# 类名、方法名、模块名

l  避免“技术名词”淹没业务意图

4、战术建模:实体 / 值对象 / 聚合

l  实体与值对象的区别与设计方式

l  聚合与聚合根:一致性边界

l  示例:订单聚合、客户聚合等建模练习

5、分层架构与 .NET 项结构

l  应用层 / 领域层 / 基础设施层的职责

l  在解决方案结构中的典型拆分方式:

C#编程进阶(图1)  MyApp.Domain

C#编程进阶(图1)  MyApp.Application

C#编程进阶(图1)  MyApp.Infrastructure

C#编程进阶(图1)  MyApp.Api (或 UI 层)

6、应服务 / 领域服务 / 仓储(Repository

l  各自的职责与边界

l  示例:

C#编程进阶(图1)  订单应用服务:协调用例流程

C#编程进阶(图1)  订单聚合内部业务逻辑:保持领域规则

C#编程进阶(图1)  仓储接口+ 基于 EF Core 的实现思路

7、总结与实践建议

l  如何从现有系统逐步演进到更“DDD 化”的结构

l  推荐的下一步实践:

C#编程进阶(图1)  选一个中等复杂度业务场景做 DDD 试点

C#编程进阶(图1)  建立团队的通用语言

C#编程进阶(图1)  逐步重构而非推倒重来




C#编程进

返回上一级