- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是一名拥有 4 年 .Net 编码经验的开发人员,并且在我的职业生涯中从不关心设计模式。最近我被要求面试一位 IT 大佬,已经进行了 5 轮(问题解决、结对编程、逻辑推理、2 轮技术面试)面试,但没有提供工作。
我从他们那里得到的反馈是我不擅长设计原则,尽管他们对我的技术和逻辑推理能力感到满意。这让我觉得了解设计模式是解决问题的唯一途径?
虽然我在编码中从未使用过太多设计模式,但我总是尝试实现 OOPS 的基本原则
我可以使用这些原则来设计一个松散耦合、开放增强功能且易于维护的系统。最终,这些是所有设计模式的核心构造。
但我的问题是为正确的问题找到正确的模式。我知道仅仅阅读所有出版的关于设计模式和实践的书籍是无法获得这些知识的。这些知识来自构建不同系统的经验。
模式-问题匹配是否有可用的用例。您对学习设计原则有何建议?
干杯
最佳答案
虽然我认为熟悉设计模式并没有坏处,但我想确保您的问题中没有将两件事混为一谈。你说你得到的反馈是你应用设计原则的能力较弱,,你从反馈中得出结论,你需要学习设计模式。但那是不同的。
“设计模式”是您在许多不同领域看到的重复出现的模式。例如,在建筑中,您会在许多不同类型的建筑物中看到“内部庭院”的模式。在编程中,您会在许多不同类型的程序中看到诸如“只能有一个实例的类”或“将这个粘合到那个的小代码块”之类的模式。
但是原则不是模式。模式是一种特殊的重复设计。原则是一种想法,它是什么使设计对正在设计的工件的用户好的基础。
例如,JScript语言的一个设计原则是“宽容小错误”。如果你为 11 月 31 日创建一个日期对象,它会默默地将其更正为 12 月 1 日,而不是给出错误。没有“小错误宽恕模式”。让设计容错是一种设计原则——当我们可以选择如何设计一个特定的特性时,我们会考虑它与所有原则的一致性——其中一些原则是矛盾的——并使用它们来指导功能的设计。
这不是 C# 的设计原则;其实恰恰相反是C#的一个设计原则。设计原则本身并无好坏之分。它们是使设计对其目标用户群有益的指南。
在不理解模式的情况下编写代码意味着您的工具箱中没有可以更轻松地完成常见任务的工具。在不理解设计原则的情况下编写代码意味着编写不一致、难以理解且违背用户需求的代码。两者都很重要,但又截然不同。
关于c# - 设计模式的挫折,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2309241/
我一直在努力让 Eclipse 正常工作,但由于某种原因,我无法安装插件、更新,甚至无法访问市场。在进行了一些研究之后,我发现在大多数情况下这是一个代理问题,但我在一个私有(private)家庭网络上
好吧,我知道我一定遗漏了一些明显的东西。这是示例代码(当在 viewDidLoad block 中执行时,它会静静地崩溃......没有错误输出到调试控制台)。 NSMutableArray *bs
我正在尝试替换/删除这个: [\" 从字符串bump3 NSString *bump5 = [bump3 stringByReplacingOccurrencesOfString:@"[\\"" wi
所以我已经花了几个小时来完成我认为会快速简单的项目,但我无法让它工作!这让我很沮丧,哈哈,我必须接近,但也许我不是。 我将在我的代码中附上注释,解释它应该做什么。本质上它使用私有(private)构造
我正在编写一个 c# 程序,它将启动许多子进程。稍后,我需要通过 ID 检索这些进程,然后将这些进程与存储在字典中的一组进程进行匹配,这些进程在首次创建时添加到字典中。但是,我遇到了一个看起来很荒谬的
我仍在努力弄清楚,为什么我只看到典型的“黑屏”。我只渲染了一个矩形,但什么也没发生。 #include "expwidget.h" #include ExpWidget::ExpWidget(QOb
我有一个 I/O 密集型操作。 我只希望一次最多运行 5 个线程。 我有 8000 个任务要排队并完成。 执行每个任务大约需要 15-20 秒。 我查看了 ThreadPool,但是
我正在尝试学习在 JavaScript 中进行面向对象的编程并严格违反 JSLint。我知道我在非全局环境中使用它(或类似的东西......),但我不知道如何正确地做到这一点。这是我的代码: func
我正在开发一个包含 javascript 图像旋转器的网页,但它需要能够处理不同尺寸的图像。 我用作基础的代码在包含图像的 float LI 外部有一个 DIV,但无论我尝试什么,我似乎都无法让图像全
我是一名优秀的程序员,十分优秀!