软件工程

针对在系统开发生命周期中工作的专业人士,学者和学生的问答

14
使用反射是否有问题?
我不知道为什么,但是当我使用反射时,我总是觉得自己在“作弊”-也许是因为我知道我要表现出色。 我的一部分说,如果它是您正在使用的语言的一部分,并且可以完成您尝试做的事情,那么为什么不使用它呢?我的另一部分说,必须有一种无需使用反射即可执行此操作的方法。我想也许这取决于情况。 使用反射时需要注意哪些潜在问题,我应该如何关注它们?尝试寻找更常规的解决方案需要花费多少精力?

20
当我只有一个大主意时,开始一个大项目的步骤是什么?[关闭]
我是计算机工程专业的学生。我一直在思考如何处理一个大项目。以更有效,更有效的方式实现目标的第一步应该是什么? 当我提出一个项目时,我不知道该如何开始工作。很多时候,我只是忽略了它。但是,我不想再忽略我的项目构想了。 现在,我问大家,有人可以分享他/她的经历吗?当我拥有一个主意时,我应该如何开始一个项目?

7
Java的泛型有什么问题?[关闭]
我在该站点上看到过多次文章,这些文章谴责Java对泛型的实现。现在,我可以诚实地说,使用它们没有任何问题。但是,我没有尝试自己做一个通用类。那么,Java的通用支持又有什么问题呢?
49 java  generics 


17
管理人员如何知道一个人是好是坏的程序员?
在大多数从事编程团队和部门工作的公司中,设计和编写代码的程序员以及负责……管理工作的经理组成。除了不编写代码之外,管理人员通常甚至不看团队开发的代码,甚至可能没有在工作计算机上安装适当的IDE。 尽管如此,管理者还是要判断一个人是否工作良好,是否应该负责某人,或者是否应该指派特定的开发人员来承担最重要和最重要的任务。最后但并非最不重要的一点:经理们通常分配季度奖金! 为了有效地完成上述工作,经理当然应该知道一个人是否是一个优秀的程序员。问题是,他们怎么做到的? 他们甚至不看别人写的代码,他们不能直接评估程序员开发的组件的质量……但是他们对谁是一个好的编码者和谁不是那么好的估计在这方面是正确的。在大多数情况下! 有什么秘诀?

10
“如果(0 ==值)…”弊大于利吗?[关闭]
当我在别人的代码中看到它时,这是我最讨厌的事情之一。我知道它的含义以及为什么有人这样做(例如,如果我不小心放了'='怎么办?”)。对我来说,这就像一个孩子下楼,大声地数步。 无论如何,这是我反对的论点: 它破坏了读取程序代码的自然流程。我们人类说“如果值等于零”而不是“如果值等于零”。 当您的条件中有一个赋值,或者实际上您的条件仅由该赋值组成时,现代编译器会警告您,是的,无论如何看起来都是可疑的 如果您是程序员,则在比较值时不要忘了加双'='。您可能会忘记加上“!”。测试不平等时。

11
为什么注释块很重要?
曾经有人说过,我们应该在所有方法的前面加上 /// <summary>注释块(C#),但没有解释原因。 我开始使用它们,发现它们使我非常恼火,因此停止使用它们,除了库和静态方法。它们体积庞大,我总是忘记更新它们。 是否有充分的理由/// <summary>在代码中使用注释块? 我通常//一直在使用注释,这只是/// <summary>我想知道的内容。
49 c#  comments 

19
在大型站点上服务后台任务
我们正在处理StackOverflow上一个有趣的问题。 我们有一堆小的“需要尽快完成的任务”。一个示例是更新“相关问题”列表。过去我们所做的是将这些任务附加到某些用户的页面加载中。 这从来都不是理想的,但并不是很明显。现在,SO已经超过了1,000,000个问号,那些不幸的用户开始感觉到它。 自然的解决方案是将这些任务实际推入后台。我正在考虑有两种广泛的方法可以做到这一点。 1.在IIS中作为自定义线程池/工作队列 基本上,我们启动了几个(非ThreadPool,以便不干扰IIS)线程,并使它们服务于我们将Funcs推入的某些集合。 这里的最大优点是简单性。我们不必担心会封送任何东西,也不必确保某些外部服务正常运行并做出响应。 我们还可以访问所有通用代码。 缺点是,我们不应该使用后台线程。我知道的反对意见都集中在饥饿的IIS(如果使用ThreadPool)和线程随机死亡(由于AppPool回收)的问题上。 我们已经有了现有的基础架构来使随机线程死亡成为非问题(基本上可以放弃检测任务的可能性),并且限制线程数量(并使用非ThreadPool线程)也不难。 我是否在IIS进程线程池/工作队列中缺少其他任何反对意见? 已移至StackOverflow,因为此处未真正解决。 2.作为服务 某些第三方解决方案或定制解决方案。 基本上,我们会将任务跨流程边界编组到某个服务,而不必理会它。大概我们是在某些代码中链接原始代码,或者将它们限制为原始SQL +连接字符串。 优点是这样做的“正确方法”。 缺点是我们要么只能做有限的工作,要么必须制定一些系统来使该服务与我们的代码库保持同步。我们还需要以某种方式挂钩所有监视和错误日志记录,这些都是通过“ In IIS”选项免费获得的。 服务方法还有其他好处或问题吗? 简而言之,是否存在无法预见和无法克服的问题,从而使方法1变得不可行,如果是的话,我们是否应该寻求方法2的良好第三方服务?

12
有没有理由在构造函数中完成所有对象的工作?
首先,我说这不是我的代码也不是我的同事的代码。几年前,当我们的公司规模较小时,我们有一些我们需要做的项目,但我们没有能力,因此将它们外包了。现在,我一般都不会反对外包或承包商,但是他们产生的代码库是大量的WTF。话虽这么说,它确实(大部分)有效,所以我认为它在我所见过的外包项目中排名前10%。 随着我们公司的成长,我们尝试将更多的内部开发工作带入公司。这个特殊的项目落在我的腿上,所以我一直在检查,清理,添加测试等。 我看到有一种模式经常重复出现,而且看起来如此令人恐惧,以至于我想知道是否存在某种原因,而我只是看不到它。模式是一个没有公共方法或成员的对象,只是一个公共构造函数,它可以完成对象的所有工作。 例如,(如果很重要,代码是Java的,但是我希望这是一个更普遍的问题): public class Foo { private int bar; private String baz; public Foo(File f) { execute(f); } private void execute(File f) { // FTP the file to some hardcoded location, // or parse the file and commit to the database, or whatever } } 如果您想知道,这种类型的代码通常以以下方式调用: for(File f …

9
管理器类是否可以作为不良体系结构的标志?
最近,我开始认为在您的设计中拥有很多经理类是一件坏事。这个想法还不够成熟,我无法提出令人信服的论点,但这里有几点要点: 我发现,要理解高度依赖“经理”的系统要困难得多。这是因为,除了实际的程序组件之外,您还必须了解使用管理器的方式和原因。 在很多时候,管理人员似乎常常被用来缓解设计问题,例如当程序员找不到一种方法来制作程序Just Work TM并不得不依靠管理人员类来使一切正常运行时。 当然,马槽可能很好。一个明显的例子是EventManager,这是我一直以来最喜欢的结构之一。:P我的观点是,经理似乎经常被滥用,除了掩盖程序体系结构的问题外,没有其他充分的理由。 经理班真的是不良建筑的标志吗?





6
将一个类定义为自身列表的子类有什么缺点?
在我最近的项目中,我定义了一个带有以下标头的类: public class Node extends ArrayList<Node> { ... } 但是,在与我的CS教授讨论后,他说这堂课既“令人难以忘怀”又是“不良习惯”。我还没有发现第一个是特别真实的,第二个是主观的。 我这样做的理由是,我有一个对象的想法,该对象需要定义为可以具有任意深度的对象,在这种情况下,实例的行为可以通过自定义实现或几个类似对象相互作用的行为来定义。这将允许抽象对象,这些对象的物理实现将由许多相互作用的子组件组成。¹ 另一方面,我知道这可能是不好的做法。将某物定义为自身列表的想法不是简单的,也不是物理上可以实现的。 考虑到我的用法,有什么正当的理由为什么我不应该在代码中使用它? ¹如果需要进一步解释,我会很高兴;我只是想使这个问题简明扼要。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.