当给出一个重构的例子时,我已经厌倦了看到数据访问层,其字符串文字被连接字符串替换为 IConnectionStringProvider 。
例如:
public DataSet GetCustomers()
{
string connectionString = "SQLClient;Blah;Blah";
using(SqlConnection conn = new SqlConnection(connectionString))
...
到这个
public DataSet GetCustomers()
{
string coonectionString = connectionStringProvider.GetConnectionString();
using(SqlConnection conn = new SqlConnection(connectionString))
...
在域驱动设计世界中,我已经厌倦了将域视为客户,其中有许多订单,其中还有很多< EM> OrderLineItems 。请使用更有趣的东西解释聚合根!
或者我完全失去它并重复这些简单化是教导这些想法的最佳方式?
噢,用形状来解释继承......
您使用哪些示例来教授这些概念?
答案 0 :(得分:3)
我已经厌倦了看到功能编程倡导者展示如何在Haskell,OCaml,F#,Scheme等中的一行中实现“快速排序”。他们展示的“快速排序”不是真正的Quicksort,因为它是没有交换元素,并正在进行各种列表构建和垃圾收集。用功能语言做一个真正的Quicksort非常麻烦。
让我想知道他们还在说什么。
答案 1 :(得分:2)
作为一个做了很多电话屏幕的人,我厌倦了听说Shape是Square和Circle的基类。在讨论类层次结构和接口时,我们需要一些更独立的思想。
答案 2 :(得分:1)
我记得通过Car
或Bicycle
扩展Vehicle
的示例阅读OOP,所有示例都有steer()
- 方法(或类似的东西)
答案 3 :(得分:1)
OO拥有一个House对象,其中包含多个Window对象和一个太抽象的Door对象,无法使用。
是的车辆相关车辆也不是那么好。
这里要思考的问题是“我希望阅读此内容的人学习?”如果你试图让人们了解对象和继承,那么使用有意义的真实例子来做。
所以一个对话框对象,包含几个按钮对象和一个文本框对象是一个更加现实的想法,并没有更复杂的理解 - 每个人都看到过一个对话框。然后可以将其细化为通用的“窗口”对象,其中按钮,文本框和对话框是子类。
然后,这将方便地创建一个真实的,有效的代码片段,而不是用抽象的理论填充读者的头脑,然后看看他们是否可以使心理跳跃到现实世界的概念。答案 4 :(得分:1)
班级工厂/建筑师模式。
特别是关于复杂模板填充的许多文章,以便将模式一劳永逸地放入代码中。我的意思是,是的,它可以做到,这是一个有用的模式,但它不是圣杯。它是一个创建对象的对象。带接口。和参数。还有东西。
Blargh。
答案 5 :(得分:0)
我记得OOP和数据库设计中的Employee,Manager示例。
答案 6 :(得分:0)
Duck.Quack();
答案 7 :(得分:0)
对于OOP中的继承,我通常使用四边形。 将其扩展为正方形,矩形,...... 扩展正方形以制作立方体,矩形以制作长方体......