首页
C&C++
C#语言
Java
Python
人工智能
Web前端
数据库
面试笔记
其它
软件推荐
搜索
C#代码复杂度警示录:20个真实案例揭示如何编写更简洁、可维护的代码
作为C#开发者,我们都希望编写干净、可维护且可扩展的代码。但即便怀着最好的初衷,也容易陷入让代码难以阅读、测试或扩展的模式。随着时间的推移,小的捷径可能演变成大的混乱——导致Bug频发、开发疲劳和系统脆弱。本文将列举20个清晰的信号,表明你的C#代码可能过于...
7-1 8:34
124
解锁仓储模式的5大高阶技巧:让.NET开发效率飙升的实战指南
仓储模式(Repository Pattern) 是.NET中流行的设计模式,但人们常常仅将其实现为Entity Framework的简单封装,从而错失了它的真正潜力。本文将深入探讨5个颠覆性技巧,帮助你在现代.NET开发中充分发挥仓储模式(及泛型仓储模式)的强大性、灵活性,并真正从中获益。针...
6-7 9:18
117
C#代码异味警示录:15年经验老司机总结的十大避坑指南
你一定有过这样的感受——深陷遗留C#代码库时,总觉得某些地方不对劲。虽然说不清具体问题,但那种不安感如影随形。就像走进房间闻到异味却找不到源头,这就是代码异味(Code Smell)。它预示着潜在的bug、技术债务和维护噩梦。作为拥有15年C#开发经验的程序员,我深刻...
6-7 9:17
104
十年C#老兵吐槽:命名混乱、版本爆炸、语法膨胀…但我依然爱它
C# 这门语言养了我整整十年。大学时我学的是 Java。从 C/C++ 转过来简直是一种解脱——终于不用再面对该死的指针了。第一份工作被迫学 C#。我写的第一个程序根本是 披着C#外衣的Java代码(毕竟当时我只会Java)。我热爱 C# 和整个 .NET 生态:强类型、多范式、工具链完...
6-7 9:16
118
规范模式:终结仓储臃肿的终极武器(C#实战)
这是一个API发布后的清晨。原本简单的新端点——通过创建者名称获取聚会并包含参与者、邀请函和创建者——却在GatheringRepository中膨胀成了又一个新方法。突然间,你发现自己面对着这样的方法群:GetByIdWithCreatorAndAttendeesAsync(...)GetByNameWithEverythingAsy...
6-7 9:15
105
责任链模式:告别臃肿的if-else,让请求在对象链中智能传递
在上一篇文章《观察者模式:让代码主动响应,告别轮询》中,我们探讨了观察者模式如何以解耦的方式实现系统事件响应。作为行为设计模式系列的第二篇,本文将介绍另一种行为模式——责任链模式(Chain of Responsibility)。顾名思义,该模式会为请求创建一条由多个潜在...
6-7 9:13
163
策略设计模式:动态切换算法的艺术(C#实现)
策略设计模式是一种行为型设计模式,它允许在运行时从算法族中选择特定算法。通过将算法单独封装并使其可互换,该模式能帮助我们创建灵活、可复用的代码,而无需修改现有代码结构。无策略模式时的问题若不使用策略模式,我们通常需要依赖条件语句(if-else或switch-case...
6-7 9:11
138
告别MediatR:构建极简CQRS架构的终极指南
Jimmy Bogard近期宣布,MediatR将对达到一定规模的企业采用商业许可模式。这一变化促使许多团队重新评估其使用方案,并开始寻找替代方案。现在正是转型的好时机。尽管CQRS与MediatR并非同一概念,但MediatR几乎已成为.NET生态中CQRS模式的代名词。大多数项目仅将其用作...
6-7 9:4
145
从"Hello World"到高手进阶:10个必掌握的.NET Core实战技巧
你已经告别了Hello World阶段,能比泡方便面还快地搭建API,但总觉得哪里不对劲...仿佛每次生产环境出问题(本地却正常)时,框架都在无声地嘲笑你。是的,是时候升级了。依赖注入(DI) —— 不只是流行词我知道你用过了——可能从StackOverflow复制来的。也许注入过一两...
6-7 9:3
135
LINQ的魔幻与禁忌:5个让你既爱又恨的"骚操作
LINQ的使用,往往在巧妙与邪恶之间只有一线之隔。我曾深刻领悟这一点——在一次代码评审中,我自信满满地展示了一段自认为堪称艺术品的LINQ代码,结果看着资深开发者的表情逐渐扭曲。这……确实能跑,他缓缓说道,但今晚我可能会因为这段代码失眠。LINQ不仅是一种工具,...
6-7 9:1
129
<<
<
…
9
10
11
12
13
14
15
16
17
18
…
>
>>
阅读排行
深入WPF数据绑定:Converter...
3448
C#异步定时器:精准定期执行...
3427
WPF应用中融入ASP.NET Core...
2737
在C# .NET 8中使用MediatR实...
2533
.NET Core 中集成Dapper高级...
2164
延迟等待的艺术:C#中Task.D...
2120
精准数字处理:C#中四舍五入...
2409
.NET 性能分析:.NET 8 中的...
1992
串口通信利器:RJCP.DLL.Ser...
2101
WPF中轻松生成动态图表:实...
2077
轻松上传:C#中HTTP POST mu...
2124
C# 中的并发性:使用 Blocki...
1812
C#中轻松实现二维码和条形码...
1805
C#屏幕截图:轻松捕获活动窗...
1904
深入了解SOAPCore:在.NET 6...
1786
在 .NET8 中通过 RabbitMQ实...
1635
C#串口通讯实战:基础功能及...
1740
MediatR让进程内通信如此简...
2722
ASP.NET 后端开发:全面的路...
1475
WPF中轻松操控GIF动画:WpfA...
1586
解决WPF界面卡死等待问题:...
2668
实现WPF多语言支持:简单灵...
1522
Microsoft.Extensions.Loggi...
1431
ASP .NET Core 8+ 中的全局...
1397
.net中OpenCVSharp+Zxing读...
1510
.NET —ToList 和 ToArray ...
1375
C#中Task.Run怎么用?能解决...
1464
还在到处加异常日志记录?试...
1448
.NET 9中ToList 和 ToArray ...
1309
解密C#中允许HttpClient使用...
1314
打造真实感十足的速度表盘:...
1423
掌握System.Text.Json中的多...
1419
WPF神器揭秘:一键截图,轻...
1287
深入理解WPF中的Dispatcher...
1365
掌握ImageSharp:图像处理的...
1360
C#文件编码检测:轻松解析文...
1248
轻松实现.NET应用自动更新:...
1356
使用OpenXML在.NET 6中导出E...
1349
在 ASP.NET Core Web API 中...
1214
.NET 中的 UUID 和 ULID:最...
1204
C# 中的弱事件 — 如何避免...
1186
ASP.NET Core .NET 8 中间件...
1183
ZLogger v2 架构:利用 .NET...
1155
C# .NET 8中的自动映射器Aut...
1147
WPF魔法:轻松实现依赖注入...
2355
解密C# Socket通信:克服粘...
1245
FluentFTP实战:轻松操控FTP...
1197
WPF开发新境界:MVVM设计模...
1185
WPF大展示专业指南:轻松实...
1245
C# Socket通信:灵活传输DTO...
1053