Web 应用程序中的方法应该是公共的还是内部的?

Posted

技术标签:

【中文标题】Web 应用程序中的方法应该是公共的还是内部的?【英文标题】:Should methods in a web app be public or internal? 【发布时间】:2017-05-18 06:09:39 【问题描述】:

在 Web 应用程序的范围内,将方法的可访问性声明为 publicinternal 的含义是什么?

Web 应用程序通常包含仅在应用程序本身内使用的方法。例如,电子商务网站可能包含检索用户订单历史记录的方法。大致如下:

public List<Orders> RetrieveOrders() 
    //code goes here

如果此方法包含在类库中,publicinternal 访问修饰符的意义相当简单;公共方法可以在库本身之外访问,而内部方法则不能。

在 Web 应用程序方面有什么实际区别吗?

编辑: 我的问题被建议与What is the difference between Public, Private, Protected, and Nothing? 重复。我不是要求解释访问修饰符。我在问网站中的方法上的访问修饰符是否有任何意义。

【问题讨论】:

What is the difference between Public, Private, Protected, and Nothing?的可能重复 【参考方案1】:

一般而言,public 应仅限于外部可见的方法 - 这包括公共 API 和由于技术限制而必须公开的方法(即 ASP.Net 页面的类)。

对于 Web 应用程序,通常没有“公共 API”,因为这些库通常不会被外部用户使用。

因此,internalpublic 在 Web 应用程序开发方面几乎没有实际区别。仅使用 public 会带来一些小便利,因为您不再需要 InternalsVisibleTo 属性来进行单元测试。

更多讨论:public vs. internal methods on an internal class、internal vs public in c#

旁注:ASP.Net MVC 网站是一个类库 - 因此所有与类库相关的访问修饰符的讨论都适用于 ASP.Net MVC/WebAPI 网站。

【讨论】:

您有更多关于 ASP.NET MVC 作为类库而不是“常规”.NET Web 应用程序的信息吗?这是我以前从未遇到过的有趣差异。 (也可以使用 Google 搜索短语)。 @ShaiCohen 它始终是 .Net 程序集(在 VS 中有时称为“类库”)——我只是想强调一个事实,您不需要对 Web 项目进行特殊考虑。 .Net 代码在执行前总是被编译成 .Net 程序集(DLL 或 EXE)。有时该程序集不是直接可见的(即,如果站点中只有 ASPX 文件在执行时编译为程序集),但对于 ASP.Net MVC,您总是有需要在站点之前编译为程序集的控制器/路由可以运行。

以上是关于Web 应用程序中的方法应该是公共的还是内部的?的主要内容,如果未能解决你的问题,请参考以下文章

c#抽象方法:内部公共和虚拟?

C# 中的内部与公共

我应该测试私有方法还是仅测试公共方法? [关闭]

为什么断言不能用于公共方法中的参数检查?

我应使用哪个Archimate元素为商店建模

应该如何跟踪具有继承的 Java 程序?