VS默认的类前缀(访问控制符)是internal

大家都知道VS默认新建的class的时候,class前面是什么都没有的,按照规则,这个class的可见性是internal,但是说实话,很多人包括我在内,都知道internal是什么意思(程序集内部可见)但是很少有人去用这个默认的设定,而是习惯性的将其改为public,以至于很多时候觉得每次创建class都得去改动一下觉得很麻烦,然后去改动模版文件来让每次都生成。
我当然也不例外,一直也是这么做的,后来我看了CLR via C#还有其他一些深入介绍的书,我感觉微软的VS这么多年一直没有改动默认设定是有道理的,按照可见性最小原则,如果没有什么特别的需要,比如你要建立一个需要外部来访问的类库,必须将类设定为public,但是如果没有类似的需要,public则是不必要的,默认的internal就可以很好的满足需要了,最最主要的是,这样对类很安全。
认识到这一点,我也就决定开始更改我的习惯,以后除非必要,否则就使用默认的internal。
除了类,变量和方法也是如此,如果只是本类内使用,一律private,对外有专门的接口(public方法和属性等);
其实,这样的问题在一开始为了方便很多都没有注意到,也不理解,但是后来慢慢熟练了,明白了,就需要考虑了。
很多知识都是如此,学习的时候多问几个为什么,了解一下实际这个概念的应用,甚至反过想一下创作这个概念的人的思路和意图,往往有助于自己更深层次的去理解,也训练了自己的思维方式。
努力去写出好的代码。

VS默认的类前缀(访问控制符)是internal的更多相关文章

  1. java类的访问控制符与其他几个特殊修饰符的总结

    1  访问控制符 1.1 字段或者方法的访问控制符   同一个类中 同一个包中 不同包中的子类 不同包中的非子类 private YES       默认(包可访问) YES YES     prot ...

  2. java_类的访问控制符

    1.分类: public protected default private是java中的访问控制修饰符. public String name; protected String name; Str ...

  3. Java知多少(19)访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...

  4. Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  5. java中的访问控制符

    首先来一张图: 对于一个类而言访问控制符只有一个public和默认无修饰符.其他的几个访问修饰符对于变量和方法都可以使用. 下面介绍具体的使用. 1. 公有访问控制符(public) Java的类是通 ...

  6. 《Java基础知识》Java访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: public class className { // body of class } private bo ...

  7. AJPFX关于java中可访问控制符和非访问控制符的详细总结

    1.类的修饰符分为:可访问控制符和非访问控制符两种. 可访问控制符是:公共类修饰符 public 非访问控制符有:抽象类修饰符 abstract :最终类修饰符 final 1 )公共类修饰符 pub ...

  8. Java final类&所有构造方法均为private的类(类型说明符&访问控制符)

    1. final是类型说明符,表示关闭继承,即final类不能有子类: 但final类可能可以在类外创建对象(即final类的构造方法可以不是private型): 在同一包中时,可以在任何另外一个类中 ...

  9. java中方法的控制修饰符也分为:可访问控制符和非访问控制符两类。

    3 .方法的控制修饰符也分为:可访问控制符和非访问控制符两类. 可访问控制符有 4 种:公共访问控制符: public :私有访问控制符: private :保护访问控制符: protected :私 ...

随机推荐

  1. poj 2253 Frogger 最小瓶颈路(变形的最小生成树 prim算法解决(需要很好的理解prim))

    传送门: http://poj.org/problem?id=2253 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  2. 翻译 TI SerialBLEbridge V 1.4.1

    原文地址:http://processors.wiki.ti.com/index.php/SerialBLEbridge_V_1.4.1 Sample App Overview This page d ...

  3. Android小游戏应用---撕破美女衣服游戏

    ImageView after; ImageView before; @Override protected void onCreate(Bundle savedInstanceState) { su ...

  4. nodejs运行的时候报错:Error: write EIO以及乱码解决方式

    在运行node.js的过程中报如下错误: events.js:72 throw er; // Unhandled 'error' event ^ Error: write EIO at errnoEx ...

  5. 【JavaScript-基础-文件上传】

    Upload 最原始方式 form表单提交 // html <form method="get" action="/test/upload"> &l ...

  6. Redhat7.2 ----team网卡绑定

    我先声明一下,team和bonding是一样的作用,只不过team多了几项功能bonding没有, 做team我们要最少准备两个网卡,我们这里主要显示主备模式. 首先我们先把网卡配置文件删除 nmcl ...

  7. iOS双滑块选择器

    iOS双滑块选择器 <SDRangeSliderView> https://github.com/qddnovo/SDRangeSliderView 实现了通用性和便利性 今天是个好日子

  8. BZOJ 2648: SJY摆棋子(K-D Tree)

    Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 6051  Solved: 2113[Submit][Status][Discuss] Descript ...

  9. MySQL->复制表[20180509]

    MySQL复制表     通常复制表所采用CREATE TABLE .... SELECT 方式将资料复制,但无法将旧表中的索引,约束(除非空以外的)也复制.   完整复制MySQL数据表所需步骤: ...

  10. 课时14.DTD文档声明上(掌握)

    1.什么是DTD文档声明? 由于HTML有很多格版本的规范,每个版本的规范之间又又一些差异,所以为了让浏览器能够正确的编译/解析/渲染我们的网页,我们需要在HTML文件的第一行告诉浏览器,我们当前这个 ...