【问题标题】:using a class or a function [closed]使用类或函数[关闭]
【发布时间】:2016-01-16 22:02:18
【问题描述】:

很抱歉这个菜鸟问题,但我一直很难区分何时创建函数或类是好的。对于我在工作中编写的一些较小的程序,我编写了一大堆函数来执行特定任务。这些程序都按预期工作。然而,当我让我的一些更资深的开发人员看一看给我他们的批评时,他们将我的很多函数完全重写为一个类。这些是我的同事,所以我不想通过询问他们为什么这样做来显得完全无能(我刚开始担任初级开发人员的这份工作)。你们有什么感想?

【问题讨论】:

  • 买一本软件设计书怎么样?
  • 我可能会从学习面向对象编程、多态性之类的东西开始......
  • 虽然我认为这是一个很好的问题。这可能会因基于主要意见而关闭。
  • 我不想通过询问他们为什么这样做来显得完全无能(我刚开始担任初级开发人员的这份工作) ...不,这是错误的想法.由于他们是老年人,因此您应该询问他们并理解并在此过程中向他们学习。
  • 第一步:在 C# 中,在类之外没有函数。重复3次!现在考虑:函数应该存在于何处Form碰巧设计或在以合理和可重用的方式对它们进行分组的类中?

标签: c# function class


【解决方案1】:

这个问题太笼统了,你真的必须了解面向对象编程的概念以及何时应该使用它。

注意:下面你会发现我的个人观点(其中一些是从伟大书籍的作者和经验丰富的程序员那里借来的),并且肯定下面突出显示的内容并不反映面向对象的思维和设计。这些将通过经验和反馈获得。

0。一个类的用例

有很多应用程序,关于在哪里使用 internal 类到您的 C# 代码。

数据传输对象 (DTO)
当您将数据从数据库传输到您的应用程序进行处理时,一个应用程序(真的很多)并且在软件中使用了很多次。
有什么比编写一个内部类来存储您的数据、实现可以稍后在您的应用程序逻辑中使用的有用且可重用的方法(例如 isAdministrator)等等更好的了。

1。面向对象的设计模式

我会推荐你​​读一本关于Object-Oriented Design Patterns的书。
类似的书籍描述了一些可以通过使用模式的类来实现的问题场景。一旦您阅读了这些模式以及可以在何处使用的可能场景,您将能够获得这本书,找到模式并解决您的问题。

我的一个同事,说一些非常有用的东西。当你遇到问题时,你应该问自己:

“使用设计模式是否再次解决了这个问题?”

如果答案是肯定的,那么您可以返回参考书以查找您的设计模式,这将解决您的问题,而无需重新发明轮子。 这种方法将教您如何何时应该使用单独的课程;但也将帮助您保持您和您的同事之间的沟通语言,也就是说,如果您正在与同事谈论您的代码,您将能够陈述设计模式并且您会立即被理解(鉴于此,您的同事知道具体的设计模式)。

2。不要害怕创建多个内部类

另外注意,不要害怕创建多个内部类。尽可能实现,不要试图实现一个内部类,混合职责。您的课程应该用于特定目的,并且不应做多于一件事(即职责,如果您正在编写一个关于将数据从数据库传输到应用程序逻辑的类,则不应该 - 理想情况下 - 做其他事情,例如将数据添加到您的数据库)。

考虑了解有关多态性、继承、封装和抽象的更多信息。

这四个面向对象编程的基本原则还可以帮助您学习如何构建面向对象的代码。

3。一般说明

作为一名初级开发人员,不仅作为一名初级开发人员,而且作为一名普通开发人员,您应该始终愿意通过寻求反馈来向更有经验的人学习。不丢人的是学习和改进代码的规律。

另一个强大的学习资源是书籍,考虑购买一些您感兴趣的领域。(例如面向对象编程、设计模式等)。

【讨论】:

    【解决方案2】:

    正如其他人在 cmets 中指出的那样,这确实过于宽泛且有点自以为是,但大局观,在以下情况下使用类:

    1. 您随着时间的推移维护状态,并将函数应用于此状态。
    2. 您有一组函数,它们具有共同的目标或处理共同的用法、数据类型或其他“明显的共同想法”。当这些功能可以在其他地方重用时,这一点尤其重要。

    但说真的,要更深入地了解,请买一本书 :-)


    顺便说一句,在 C# 中,您不能将任何功能放在一个类之外,所以问题应该是“如何将我的单体类划分为更小的类”

    【讨论】:

      猜你喜欢
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      相关资源
      最近更新 更多