基础才是重中之重~隐藏应该隐藏的对象

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介:

(本文不说IOC,不说设计模式,只说基础的internal关键字的实际意义)

题目非常有意思,“隐藏应该隐藏的对象”,事实上,我们在做开发时,会遇到一些问题,一个功能会涉及到一些类,一些方法,而向外开放的接口往往只有一个,即一个规范,多个实现,而这些实现,是通过一个类型来区别的,如:一个加密码方法EncryptString,它会有一个类型去标示你是用md5,des,还是其它方式去做加密,而对于实现的细节,调用者不需要关心,当然这还是面向对象的原则问题。

它的类型可能是个枚举:

      /// <summary>
        /// 加密类型
        /// </summary>
        public enum EncryptorType
        {
            /// <summary>
            /// DES加密
            /// </summary>
            DES,
            /// <summary>
            /// 3DES加密
            /// </summary>
            DES3,
            /// <summary>
            /// MD5加密
            /// </summary>
            MD5,
            /// <summary>
            /// Base64加密
            /// </summary>
            Base64,
            /// <summary>
            /// 加密方法
            /// </summary>
            SHA256,
        }

OK,你可以能会对外公开的加密与解密的方法如下:

string EncryptString(string str);

string EncryptString(string str, int code, EncryptorType type);

string EncryptString(string str, EncryptorType type);

string DecryptString(string str);

string DecryptString(string str, EncryptorType type);

OK,在实现调用时,我希望只希望对外开这两个方法就可以了,但是我在调用时,将md5,desc,sha256这些方法功能类都暴露出来了,对于程序来说是个很丑陋的事,对于调用者来说也很头痛,看原来的代码:

由于md5,desc,sha256这些类的修饰符都是internal,所以调用时VS会显示成这样

这些的代码调用是非常不友好了,我们需要对代码进行重构,事实上方法很简单,因为md5,des等功能类只对自己的项目可见,所以把public改为interal就可以了

这其实就是“小微”对internal真实的希望,不是吗?

重构后的代码调用:

这才是我想要的,最后对大家说一句,如果想更好的了解.net内部的知识,请把自己当成是一名微软的开发者,当成是微软的大牛,去身临其境的思考一些东西。

本文转自博客园张占岭(仓储大叔)的博客,原文链接:基础才是重中之重~隐藏应该隐藏的对象,如需转载请自行联系原博主。

目录
相关文章
|
4月前
|
前端开发
前端基础(十四)_隐藏元素的方法
本文介绍了几种在前端开发中隐藏元素的方法,包括使用`display:none`、`visibility:hidden`、`opacity:0`等CSS属性,并提供了相应的示例代码。此外,还提到了其他隐藏元素的技巧,如通过设置元素位置、使用`overflow`属性和`filter`属性以及`rgba`颜色值来实现元素的隐藏。
76 1
前端基础(十四)_隐藏元素的方法
|
8月前
|
算法 编译器 C++
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
【C++ 概念区分】C++ 中覆盖,重写,隐藏 三者的区别
236 0
|
8月前
|
JSON 定位技术 API
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)(下)
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)
93 0
|
8月前
|
运维 编译器 C#
C# 9.0中的本地函数属性:深化函数级别的控制
【1月更文挑战第17天】C# 9.0引入了本地函数属性的概念,允许开发者在本地函数上应用属性,从而进一步细化对函数行为的控制。这一新特性不仅增强了代码的可读性和可维护性,还为函数级别的编程提供了更多的灵活性。本文将探讨C# 9.0中本地函数属性的用法、优势以及可能的应用场景,帮助读者更好地理解并应用这一新功能。
|
8月前
|
移动开发 JavaScript 前端开发
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)(上)
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)
146 0
|
前端开发 JavaScript
巧妙解决显示和隐藏的代码
css使用方法 1.用opacity:0和visibility: hidden; 2.配合hover 3.原先opacity(透明度为0)hover设置为1,即从隐藏到显示,visibility同
70 0
|
存储 人工智能 弹性计算
大模型之外,阿里云对未来的真正布局是什么?
大模型之外,阿里云对未来的真正布局是什么?
461 0
html+css实战165-隐藏效果
html+css实战165-隐藏效果
133 0
|
小程序 前端开发 PHP
小程序怎么做查看更多的显示和隐藏
小程序怎么做查看更多的显示和隐藏
263 0
|
C# 编译器
C#隐藏方法
不能删除基类的任何成员,但可以用与基类成员相同的成员来屏蔽基类成员 屏蔽数据成员:派生类中声明名称和类型相同的成员 屏蔽函数成员:在派生类中声明新的带有函数签名的成员 让编译器知道:添加new关键字,否则会警告pet petpu.
711 0