针对良好的课堂设计时,要记住哪些事项?

Pet*_*ald 16 java

昨天我参加了一家领先的IT服务公司的面试.技术面试很好,没有问题,然后我又转到另一套关于管理,设计和流程的问题.除了以下问题,我已回答了所有问题.

面试官问的问题:

假设你正在开发一个课程,我将在课堂上通过扩展课程来消费,你要记住的关键点是什么?Ex,Class A,它有一个名为"方法A"的方法返回一个Collection,比如说"list".你会采取什么预防措施?

我的答案:我将考虑以下几点,例如:

  1. 类和方法需要公开
  2. 方法1返回一个列表,然后这需要是泛型.所以我们可以避免类转换异常
  3. 如果将在多线程环境中访问此类,则需要同步该方法.

但采访者并不相信我的观点.他期待我得到一个不同的答案,但我无法得到他的思考过程,他除外.

所以请提供您的建议.

Joh*_*ers 10

我希望你坚持设计Single Reaponsibility,Open/Close和Dependency Injection的原则.保持无状态,简单和可测试.确保无需更改即可扩展.

但后来,我没有采访你.

  • 这些原则都不是特定于子类化的,是吗? (2认同)

San*_*rma 6

还有一些尚未提及的要点是:

  1. 适合您的课程的体面文档,这样您就不必深入研究代码,以了解您提供的功能以及需要解决的问题.
  2. 尝试扩展自己的课程,然后再将其交给其他人.这样,如果您的课程设计不合理,您可以感受到痛苦,从而可以改善它.
  3. 如果要返回列表或任何集合,则需要提出的一个重要问题是"调用者是否可以修改返回的集合"?或者"这个返回的列表是您班级内部状态的直接表示吗?".在这种情况下,您可能希望返回一个副本以避免调用者弄乱您的内部状态,即保持适当的封装.
  4. 计划方法可见性.绘制之间明确的线public,protected,package privateprivate方法.确保不要暴露任何超出实际需要的数量.删除功能很难.如果精心设计的API中缺少某些内容,您可以稍后再添加.但是你暴露了一些无用的公共方法,你真的无法在不弃用方法的情况下升级你的API,因为你永远不知道还有谁在使用它.

  • 添加到poiint 4)因为我们在谈论派生类思考`public` /`private`是不够的:你还必须考虑API的`protected`和默认可见性. (2认同)