论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com
»
论坛
›
数据库
›
Oracle
›
读C#代码整洁之道笔记03_切面关注点、异常处理和线程与 ...
读C#代码整洁之道笔记03_切面关注点、异常处理和线程与并发 ...
冬雨财经
金牌会员
|
2023-4-4 14:03:13
|
显示全部楼层
|
阅读模式
楼主
主题
984
|
帖子
984
|
积分
2952
1. 核心关注点
1.1. 开发软件的原因
2. 切面关注点
2.1. 所有的代码领域都需要处理相关的问题
3. 结构化模式
3.1. 装饰器模式
3.1.1. 可以在现有对象上添加新的功能,而不改变其结构
3.2. 代理模式
3.2.1. 所提供的对象可以替代客户端使用的实际服务对象
4. 使用PostSharp实现AOP
4.1. 收费软件
4.2. 缓存
4.3. 日志
4.4. 异常
4.5. 安全
4.6. 验证
4.7. 事务
4.8. 资源池
4.9. 配置
4.10. 检测
4.11. 推荐使用Castle
5. 异常处理
5.1. unchecked模式
5.1.1. 改善性能
5.1.2. 很多情况下unchecked模式并不会发生运行时异常
5.2. NullReferenceException
5.2.1. 防御性编程
5.2.1.1. try {...} catch
5.2.2. 推荐实现ArgumentNullValidator
5.2.2.1. 推荐使用nameof(person)而不是对参数名称进行硬编码
5.3. 业务规则异常
5.3.1. Business Rule Exception,BRE
5.3.2. 符合预期的,并可用于控制程序的流程
5.3.3. 使用正常程序流程进行条件处理
5.3.4. 业务规则异常进行条件处理
5.3.5. 使用现有逻辑控制程序流程相比依赖抛出异常的方式显得更加合理
5.4. 异常应当提供有意义的信息
5.5. 自定义异常
5.5.1. 提供更详细的信息
5.5.2. 使用对最终用户更加友好的术语
5.6. 异常类的名称以Exception结尾
5.7. 由于异常导致方法无法完成时,应还原状态
6. 线程与并发
6.1. 使用线程池
6.1.1. 令线程池决定线程的数目而非手动设置相应值
6.1.2. 任务并行库(Task Parallel Library,TPL)
6.1.3. 使用ThreadPool.QueueUserWorkItem()
6.1.4. 使用异步委托
6.1.5. 使用BackgroundWorker
6.1.6. 令线程池决定线程的数目而非手动设置相应值
6.1.6.1. 限制线程池使用的处理器数目及线程数目
6.2. 使用互斥量同步线程
6.3. 使用信号量处理并行线程
6.4. 避免死锁
6.4.1. 当两个或者多个线程执行并等待对方完成时就会发生死锁
6.5. 避免竞态条件
6.5.1. 若多个线程使用同一个资源,并由于各个线程的时序不同而产生不同的输出,这种情况就称为竞态条件
6.6. 静态构造器
6.7. 静态方法
6.8. 可变性是多线程应用程序的问题之源
6.8.1. 创建后无法修改的对象称为不可变对象
6.8.2. 为了确保线程安全,请不要使用可变对象,按引用传递参数或者修改成员变量
6.8.3. ImmutableArray
6.8.4. readonly struct
6.9. 线程安全
6.9.1. 传递不可变类型,而非访问静态成员变量
6.9.2. 在使用集合,通过引用传递参数以及访问静态类的成员变量时必须非常小心
6.9.3. 非线程安全的代码,则需要用锁或者互斥量以及信号量锁定代码
6.9.4. 在System.Collections.Immutable命名空间中的集合是不可变集合。
6.9.5. 保护资源访问的另一种机制是使用信号量
6.10. 同步方法
6.10.1. 锁lock
6.10.2. 在项目中引入System.Runtime.CompilerServices命名空间,并在需要同步的方法和属性上标注[MethodImpl(MethodImplOptions.Synchronized)]特性
6.10.3. Interlocked类中的方法不会抛出异常
6.10.3.1. 无须使用lock语句以改善性能
6.11. 不要使用Thread.Abort中止其他线程
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
冬雨财经
金牌会员
这个人很懒什么都没写!
楼主热帖
信息与网络安全期末复习(完整版) ...
iOS全埋点解决方案-手势采集 ...
ts保姆级教程,别再说你不会ts了 ...
如何通过JDBC访问MySQL数据库?手把手 ...
Elasticsearch学习系列五(零停机索引 ...
Fastjson反序列化
Pod概述
Linux安装PHP8 新版笔记
Java 将HTML转为XML
《ABP Framework 极速开发》教程首发 ...
标签云
AI
运维
CIO
存储
服务器
浏览过的版块
云原生
DevOps与敏捷开发
数据仓库与分析
网络安全
物联网
MES
虚拟化与私有云
移动端开发
快速回复
返回顶部
返回列表