快快编制程序要点补充,急速笔记

[.NET] 《Effective C#》急迅笔记,

《Effective C#》快速笔记 - C# 高效编制程序要点补充

 图片 1

《Effective C#》连忙笔记 - C# 高效编制程序要点补充

  /// <summary> /// 自定义的特别类 /// </summary> public class MyException : Exception { public MyException() : base() { } public MyException(string s) : base(s) { } public MyException(string s, Exception e) : base(s, e) { } protected MyException(SerializationInfo info, StreamingContext cxt) : base(info, cxt) { } }

 

  3.在抛出自定义的不得了时,应该将原本的特别存放在 InnerException 属性中,那样就足以显得丰盛本身,况且消息充足的特别:

        public void Do()
        {
            try
            {
                //DoException();
            }
            catch (DoException e)
            {
                var msg = $"该问题是博主故意引起的";
                throw new MyException(msg, e);
            }
        }

 

  4.独有在设有不一致类其余上升操作时,才应该抛出分裂类其余那些,定义特别类时,还要提供基类中扶持的装有构造函数。其余,不忘记记行使 InnerException 属性来保存低档期的顺序的不行消息。

 

目录

  • 六十四、尽量降低装箱拆箱

  • 八十九、为应用程序创立特意的拾分类

  • 五十三、使用强分外安全确定保障

  • 七十三、尽量采用安全的代码

  • 七十六、实现与 CLS 包容的程序集

  • 七十、达成小尺码、高内聚的主次集

 

  那是该体系的终极生龙活虎篇。也会有一些理论有比比较大希望会过时,笔者想它依然有存在的必要,人的知识水平也是二个相接成长的历程,学会站在前任的肩头上,尝试不断的借鉴与总计。

 

二十二、使用强格外安全保险

  1.Dave 亚伯拉罕s 定义了 3 种安全拾叁分来承保程序:幼功有限支撑、强保障,以致无抛出保险。

  2.强特别保证:从那一个中平复和简化分外管理时期提供了贰个平衡点,假诺三个操作因为某些相当中断,程序将保持原状态不改变,操作还是通透到底达成,要么就不会改良程序的任何动静。强十分保障的裨益:任几时候固然捕获了极度,全数就要尝试的健康操作都不一连开展。程序当前的状态如未有开首打开该操作相符。

  3.对将在改过的数据做堤防性的复制,对这一个多少的堤防性复制进行更换,那几个中的操作或者会引发那么些,在出现极度时可将有的时候副本和原对象开展置换。

  4.终结器、Dispose() 方法和信托对象所绑定的对象措施在任何景况下都应当保障他们不会抛出极其。

 

二十四、尽量减弱装箱拆箱

  1. 值类型是数码的容器,不扶助多态。

  2. 装箱把一个值类型放在叁个未规定项指标引用对象中,让该值作为引用类型所利用。拆箱指从引用类型的职务抽出值的贰个别本。

  3. 装箱和拆箱会在无意识中成立大多别本,以致众多不便觉察的 Bug。

  4. 选取接口而不是利用场目能够制止装箱,将要值类型从接口完毕,然后经过接口调用成员。

  5. 装箱拆箱都以相比影响属性的招式,应该尽也许的制止装拆箱操作。

  6. 泛型可避防止装拆箱操作。

  7. 值类型装箱是隐式的,难以觉察,须要协和多加注意。

 

  这里是风度翩翩篇较为详细的有关装拆箱的博文:《装箱与拆箱》。

 

四十一、尽量接收安全的代码

 

七十三、为应用程序创建特意的要命类

  1.唯有当顾客会以不一样的花样去处理错误时,才应该创设分化的相当类。

  2.自定义的不胜类应该以“Exception”结尾,况兼继续 System.Exception 或别的极度类。可是你也亟需特别地蕴藏该基类中的构造函数,内容一贯付出基类完成就可以。

    /// <summary>
    /// 自定义的异常类
    /// </summary>
    public class MyException : Exception
    {
        public MyException() : base()
        {

        }

        public MyException(string s) : base(s)
        {

        }

        public MyException(string s, Exception e) : base(s, e)
        {

        }

        protected MyException(SerializationInfo info, StreamingContext cxt) : base(info, cxt)
        {

        }
    }

 

  3.在抛出自定义的不得了时,应该将原本的特别贮存在 InnerException 属性中,那样就足以显得丰富自个儿,並且音信丰富的特别:

        public void Do()
        {
            try
            {
                //DoException();
            }
            catch (DoException e)
            {
                var msg = $"该问题是博主故意引起的";
                throw new MyException(msg, e);
            }
        }

 

  4.独有在设有差异体系的苏醒操作时,才应该抛出差异品类的这些,定义分外类时,还要提供基类中辅助的持有构造函数。此外,不忘记行使 InnerException 属性来保存低档案的次序的不得了消息。

 

六十一、达成与 CLS 包容的次序集

  1..NET 运维情况与语言非亲非故,大家创制的主次集必得与 CLS 保持卓越,那样技艺保障其余的开采人士能够用另意气风发种语言来调用你的机件。

 

八十八、使用强相当安全确认保证

  1.Dave 亚伯拉罕s 定义了 3 种安全特别来作保程序:幼功保证、强保障,以致无抛出保险。

  2.强格外保险:从那二个中平复和简化卓殊管理时期提供了叁个平衡点,如若二个操作因为某些格外中断,程序将原封不动态不改变,操作依旧深透完结,要么就不会纠正程序的别样意况。强极度保险的好处:任什么时候候如若捕获了丰盛,全部就要尝试的例行操作都不三番一遍开展。程序当前的事态如未有开头实行该操作相符。

  3.对将在改善的数据做防范性的复制,对这几个数量的堤防性复制举办改进,那中间的操作恐怕会抓住那一个,在现身格外时可将一时别本和原对象举行沟通。

  4.终结器、Dispose() 方法和寄托对象所绑定的对象措施在别的情形下都应该保障他们不会抛出十分。

 

四十、实现小尺码、高内聚的主次集

 

八十二、尽量接纳安全的代码

  1. .NET 运营时方可确认保障一些享有恶意的代码无法直接渗透到远程Computer上举办。

  2. CLENCORE 中的带有代码的拜见安全设置,如:CL景逸SUV强制要求基于剧中人物的安全注脚,这样能力判别有些代码能还是无法在依靠贰个一定的角色账号下运作。

  3. CL陆风X8 能够检查 IL 代码,确定保障它荒诞不经潜在的危急行为。如:直接待上访谈原来内部存款和储蓄器。

  4. 若果代码不要求任何的新余权限,就无需使用 CAS 的 API 来推断访谈权限,因为这么只会耳濡目染属性,额外增添 CL奥迪Q7 的职业量。

  5. 你能够运用 CAS 的 API 来访谈一些受保险的能源,常常要求额外的权能。如非托管的内部存储器和文件系统、注册表等。

  6. 平日的话,大家编辑的 C# 代码都以高枕而卧的,除非您使用了 /unsafe。

  7. 应该尽量地制止访问非托管内部存储器。确实有必要的话,应该将其隔开分离在单身的程序聚焦。

 

本系列

  《Effective C#》飞快笔记(大器晚成卡塔尔国- C# 语言习贯

  《Effective C#》快速笔记(二卡塔尔- .NET 能源托管

  《Effective C#》快捷笔记(三卡塔尔国- 使用 C# 表达设计

  《Effective C#》火速笔记(四卡塔尔国 - 使用框架

  《Effective C#》神速笔记(五卡塔 尔(英语:State of Qatar) - C# 中的动态编制程序

  《Effective C#》飞速笔记(六卡塔 尔(阿拉伯语:قطر‎ - C# 高效编制程序要点补充

 

 


【博主】反骨仔

【原文】 

【参考】《Effective C#》

 

] 《Effective C#》急迅笔记, 《Effective C#》火速笔记 - C# 高效编制程序要点补充 /// summary /// 自定义的十二分类 /// /summary public class MyException :...

三十八、完毕与 CLS 包容的前后相继集

  1..NET 运生势况与语言无关,大家创制的顺序集必需与 CLS 保持宽容,那样本事确认保障别的的开拓职员能够用另大器晚成种语言来调用你的零器件。

 

二十、完成小尺码、高内聚的顺序集

  1. 若果咱们都将具有的代码放在三个前后相继聚集,那不利于组件的选取,也不便于系统的局地更新,如果能够将其拆分成小程序集,以组件的格局张开录取,就足以从自然水平上简化后续的支付工作。

  2. 大家用类进行成效的包裹和多少的存款和储蓄,独有公有的类、结商谈接口才应该叫做公约,被其他顾客(或程序集卡塔尔进行会见。

  3. 提议将次第拆分成三个程序集,把有关的连串放在同二个程序聚集。

  4. 四个程序集应该是叁个包涵相关职能的,具有优越组织的二个库。假设不精通如何的颗粒度最棒,可以微微向小而多的动向倾斜。

  5. 万一具有参数和重临值都以接口,那么别的叁个顺序集都得以比较轻松地用另二个贯彻了同样接口的主次集进行代替。

  6. 越来越小的主次集同样可以下跌程序运行时的支付。更加大的次第集要花上越来越多的 CPU 时间来加载,且要求越来越多的岁月来将必需的 IL 编写翻译成机器指令。即使唯有运维时将被调用的代码会被 JIT 编译,但顺序集是全部载入的。

  7. 在凌驾程序集时,安全性检查会成为三个附加的费用。程序赶过程序集的次数越小,其进行功用越高。

  8. 属性的消耗对大家来讲能够忽视不计,因为在开垦时,我们根本的是代码的灵活度,所以不需求操心将大程序集拆分成小程序集的本性难点。

  9. 广泛的次第集:小且仅注意于有个别特定成效的程序集,大学一年级些但含有通用功用的顺序集。无论何种意况,都应当保险其尽只怕合理的小,但不该过度。

 

本系列

  《Effective C#》急速笔记(生机勃勃卡塔 尔(阿拉伯语:قطر‎- C# 语言习贯

  《Effective C#》赶快笔记(二卡塔尔国- .NET 财富托管

  《Effective C#》神速笔记(三卡塔尔国- 使用 C# 表达设计

  《Effective C#》快速笔记(四卡塔 尔(阿拉伯语:قطر‎ - 使用框架

  《Effective C#》快速笔记(五卡塔尔国 - C# 中的动态编制程序

  《Effective C#》迅速笔记(六卡塔 尔(阿拉伯语:قطر‎ - C# 高效编制程序要点补充

 

 


【博主】反骨仔

【原文】 

【参考】《Effective C#》

 

本文由365bet体育在线官网发布于365bet,转载请注明出处:快快编制程序要点补充,急速笔记

TAG标签:
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。