Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 关于从VB6'过渡到面向对象编程的建议;风格';_Vb.net_Unit Testing_Oop - Fatal编程技术网

Vb.net 关于从VB6'过渡到面向对象编程的建议;风格';

Vb.net 关于从VB6'过渡到面向对象编程的建议;风格';,vb.net,unit-testing,oop,Vb.net,Unit Testing,Oop,我是一名小型IT部门的vb.net开发人员,在实现完全使用对象编程方面遇到了困难 我了解面向对象编程(OOP)、设计模式、单元测试等的原理,但在开发应用程序时,要么我的对象设计很差,要么我完全不使用对象进行构建。我知道如何创建单元测试,但对我创建的单元测试没有信心 我几乎只构建数据驱动的数据输入/报告类应用程序。在大多数情况下,大部分业务逻辑都在存储过程和UDF中的数据库中。我为内部和外部客户开发ASP.NET和Winforms应用程序 我已经在堆栈上询问了关于这方面的问题,我可以查看这些问题,

我是一名小型IT部门的vb.net开发人员,在实现完全使用对象编程方面遇到了困难

我了解面向对象编程(OOP)、设计模式、单元测试等的原理,但在开发应用程序时,要么我的对象设计很差,要么我完全不使用对象进行构建。我知道如何创建单元测试,但对我创建的单元测试没有信心

我几乎只构建数据驱动的数据输入/报告类应用程序。在大多数情况下,大部分业务逻辑都在存储过程和UDF中的数据库中。我为内部和外部客户开发ASP.NET和Winforms应用程序

我已经在堆栈上询问了关于这方面的问题,我可以查看这些问题,以了解良好的设计和测试,但大部分都是简短的。我读过很多关于设计的书

摆脱我的旧“VB6”方式的好的第一步是什么


谢谢

一位同事让我迷上了埃里克·埃文斯的《领域驱动设计》一书。当Nessary的时候,它真的开始让我远离数据驱动的开发

此外,在你们所在地区加入一个.NET用户群也将帮助你们找到愿意帮助你们的人

  • 尝试从OOP aproach下开发的项目中读取代码

  • 想象一下,如果您将代码作为正在阅读的示例进行编码,您的代码会是什么样子

  • 对你自己的代码要严格要求,直到你满意为止,然后当你在3个月后阅读它时,你会发现许多其他的新东西来改进它

  • 记住接吻规则,当你仍然按照OOP原则编码时,所有的部分都会适合你

  • 遵守纪律。屈服于旧的方式很容易,但不要放弃

  • 记住Dijstra的话: …当你在做一些又快又脏的事情时,你突然意识到我在看着你的肩膀,并对自己说:“迪克斯特拉不会喜欢这个”,好吧,这对我来说已经足够不朽了

    他住在我们每个人的心里。而你已经做了最重要的事情,你真的想知道怎么做。这是VB6开发人员在转换到VB.NET时遇到的主要障碍

    • 在VB6中更容易实现
    • 在VB6中,总是工作得更快
    • 这是同样的事情…只是看起来更好
    • VB6有更多的功能

    看起来很熟悉吗?

    我推荐两件事:

  • 查看UML类图并在VisualStudio中使用类图工具。OOP的目的是通过从对象的角度来思考,使事物更加“概念化”,至少对我来说,类图有助于做到这一点
  • 通读一些好的设计模式,比如Decorator或Factory方法模式。由于大多数设计模式都充分利用了面向对象的设计,并且通常都得到了很好的描述,因此它们确实可以帮助我们理解概念

  • 几年前我处在你的位置。我记得读过一篇文章,估计你会花6个月到一年的时间阅读面向对象开发,然后才能开始“理解”

    我开始只是尝试在我的日常程序编程中引入对象。然后我尝试尽可能多地从UI中获取处理。然后我尝试为我的业务逻辑和数据访问创建“层”。我知道您的很多业务逻辑可能已经存在于数据库中,但在发生变化的情况下,有一个BL层是没有坏处的。现在,它几乎可以作为一个通行证

    我还有Eric Evan的领域驱动设计书要读,但有几本书对我有帮助,分别是“和我目前正在读的书”。这本书,也许比你现在真正需要的更多,是第一本帮助我真正理解这些层以及如何实现它们的书


    无论如何,祝你旅途好运。记住,这将是一个过程,而不是目的地

    除了在其他答案中给出的建议外,你应该放弃VB.NET,学习C#


    它不会为你做任何事,但它会帮助你摆脱旧的思维方式。

    我听到了,伙计。我也是,生活在你的世界里。商界人士要求报告的世界。复杂的报告。使用复杂存储过程轻松构建的报表。在这个世界上,人们很容易认为数据库是王者,它驱动着应用程序。这种思路导致了复杂的数据库TSQL代码、视图、函数和存储过程

    当然,如果它确实是您需要的报告,那么复杂的sql语句可能就是答案。然而,您想知道如何摆脱数据驱动的世界,进入面向对象的世界

    我认为典型的OO设计教程不会对你有好处。谁在乎狗是不是一种动物,德国牧羊犬是不是一种狗。这并不能解释你是如何在工作中做生意的。此外,这只是OO继承的一个例子。其他OO模式,如组合和依赖项注入,在大多数情况下更有用

    我认为您处理下一个项目或任务的方式是暂时忘记数据库。假设您生活在一个神奇的世界中,不必从数据库获取数据,也不必将数据写回数据库。您生活在一个始终使用正确数据填充对象的世界中。首先在抽象世界中为对象建模。在这样做之后,然后(并且只有那时)关心获取和写入数据库的混乱实现细节。数据库只是用来保存数据的。您的数据是活动的,因为您已经对其进行了建模,使其符合域的规则

    理解UML将对这种类型的mo有极大的帮助