软件工程

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

5
在C ++中使用名称空间的最佳做法
几个月前,我读过Bob叔叔的Clean Code,它对我编写代码的方式产生了深远的影响。即使看起来他在重复每个程序员都应该知道的事情,将它们放在一起并付诸实践确实可以使代码更简洁。特别是,我发现将大型函数分解为许多微型函数,并将大型类分解为许多微型类非常有用。 现在问这个问题。本书的示例全部使用Java,而过去几年我一直在使用C ++。干净代码中的想法如何扩展到Java中不存在的名称空间的使用?(是的,我知道Java程序包,但是并不是完全一样。) 将创建许多微小实体(每个都有明确定义的责任)的想法应用于命名空间是否有意义?一小组相关类是否应该始终包装在命名空间中?这是管理拥有许多小类的复杂性的方法,还是管理大量名称空间的成本过高? 编辑:在有关包装原则的Wikipedia条目中回答了我的问题。
38 design  c++  namespace 

12
过时的评论是都市神话吗?
我不断看到人们声称“评论趋于过时”。问题是,我认为我在整个职业生涯中可能已经看到两三个过时的评论。单独的文档中过时的信息一直在发生,但是根据我的经验,代码本身中过时的注释非常少见。 我刚刚和谁在一起很幸运吗?某些行业是否比其他行业更容易出现此问题?您是否有看到最近过时评论的具体示例?还是过时的评论更多是理论问题而不是实际问题?
38 comments  myth 

10
WPF与WinForms-Delphi程序员的观点?
我已经阅读了WPF与WinForms上的大多数主要线程,而我发现自己陷入了不幸的矛盾之中,当您在尝试使用过的和真正的先前技术(Winforms)以及它的后继技术(WPF)之间做出选择时,就会陷入这种矛盾中。 我是多年的资深Delphi程序员,最终终于跳到了C#。我的其他Delphi程序员同伴将了解到,我很高兴知道Delphi闻名的Anders Hejlsberg是C#的架构师。我对Delphi的VCL定制组件非常着迷,尤其是那些涉及制作多步向导和充当子组件容器的组件的组件。 在这种背景下,我希望从Delphi转到C#的那些人可以帮助我完成WinForms vs. WPF决策,以编写初始应用程序。请注意,当我进行编码时,我非常急躁,诸如成熟的自动完成功能和适当的调试器支持之类的东西可能对我来说成败一个项目,包括能够找到有关API功能和调用的随时可用信息,甚至更多的错误解决方法。 。 2009年初日期范围内的SO线程和注释使我非常担心WPF,因为它可能会破坏我的C#UI开发代码。另一方面,花费大量时间来学习即使没有被放弃也即将被替换的API技术(WinForms),同样令人不安,我确实在WPF诱人中发现了GPU支持。 因此,我的矛盾情绪。由于我还没有学过任何一种技术,所以我有一个难得的机会重新开始,而且不必面对巨大的“无学习”曲线,当WinForms程序员转向WPF时,我已经看到人们在各个线程中提到了这一点。另一方面,如果对像我这样的耐心的RAD开发人员来说,使用WPF太令人沮丧或产生其他严重的负面影响,那么我将坚持使用WinForms,直到WPF达到相同的支持水平和易用性。为了给您一个具体的例子说明我作为程序员的心理,我使用了VB,随后又使用了Delphi,以完全避免使用MFC进行编码的真正痛苦,MFC是许多开发人员在开发早期Windows应用程序时都会遇到的Windows UI库。我从未后悔避免使用MFC。 知道Anders Hejlsberg是否参与过WPF和/或WinForms的体系结构,以及这两个代码库中体现的创意视野和易用性方面是否存在差异,也令人感到欣慰。最后,再次让Delphi程序员知道使用WPF而不是WinForms时需要多少“ IDE schock”,尤其是在调试器支持方面。2011年更新的任何就业市场评论也将不胜感激。
38 c#  wpf  winforms  delphi  microsoft 

6
何时不使用框架
如今,人们可以找到一种适用于任何语言的框架,以适应几乎任何项目。大多数现代框架都相当健壮(通常而言),具有逐小时的测试,经过同行评审的代码以及出色的可扩展性。 但是,我认为任何框架都存在一个缺点,即作为一个社区的程序员,可能会过于依赖于他们选择的框架,以致他们不再了解底层的工作原理,或者对于较新的程序员,他们永远也不会学习底层的工作原理。首先。很容易变得专业化,以致于您不再是“ PHP程序员”(例如),而是“ Drupal程序员”,而不会包含其他任何内容。 谁在乎吧?我们有框架!我们不需要知道如何“手工完成”!对? 基本技能丧失的结果(有时,不使用框架的程序员被视为“过时的”)是在不需要或不适当的地方使用框架成为一种常见的做法。框架的功能有助于将结束语与基本语言的能力混淆。开发人员甚至开始使用框架来完成最基本的任务,因此曾经被视为基本过程的现在涉及具有自己的怪癖,错误和依赖关系的大型库。曾经在20行中完成的工作现在通过包含20,000行框架并编写20行以使用该框架来完成。 相反,人们不想重新发明轮子。如果我正在编写代码来完成一些基本的,常见的小任务,当我知道XYZ框架提供了我所追求的所有功能以及更多功能时,我可能会觉得很浪费时间。“更多”部分仍然让我感到担忧,但是似乎没有更多的人考虑它了。 必须有一个好的指标来确定何时使用框架。你有什么考虑的门槛是,如何你决定何时,当不使用框架,或。
38 frameworks 

5
学习Python的Java开发人员:我需要包扎哪些概念?
背景:我已经完成了一些教程并编写了一些小项目。使用Google和StackOverflow一切都很好。 在过去的几天里,我几次想知道“我想念什么?” -我觉得我在用Python编写代码时仍在思考Java。 StackOverflow上的这个问题充满了关于学习Python需学习哪些资源的提示,但我仍然觉得我是Java开发人员,有字典(无需双关语)可以翻译成Python。 我真正想做的是重构我的头脑,使其能够编写Pythonic Python而不是伪装成Python的Java,而又不会失去我的Java技能。 因此,我的问题的症结在于:Java开发人员真正需要学习什么概念才能思考Pythonic?这包括需要学习的所有内容。 注意:我是在询问语言概念,而不是语言语法。


17
软件设计:快速构建还是良好构建?
在构建非平凡的应用程序时,最好集中精力使事情快速运行,并在代码中采取一些捷径,例如将模型逻辑与视图混合,破坏封装-典型的代码味道?或者,您是不是最好花些时间来构建更多的体系结构,正确构建它,但是冒着这样的风险,因为您的设计非常流畅,所以可能无法使用所有这些额外的代码,并且如果反馈导致您可能不得不将其丢弃去一个不同的方向? 对于上下文,我正在构建一个桌面应用程序。我是唯一的开发人员,因为我有一份日常工作,所以我做兼职。现在,在工作中,我会尽量按计划安排正确的方式做事。但是对于这个项目,我希望它会随着人们的反馈而变化,我不确定这是正确的方法。我本周花了几个小时在适当的地方放置了教科书“模型视图控制器”设计,以将模型中的更改传达给视图。总的来说,这很好,但是我不确定是否需要多个视图来显示数据,而且我知道如果没有其他体系结构,我可以更快地显示内容。我可能每周花10到15个小时花在该项目上,如果遵循良好的软件实践,我会花很多时间来构建可以演示的东西。我知道我的用户会 不在乎我在内部使用MVC,他们只是想要解决问题的方法。但是我也遇到过这样的情况,即您因快捷方式而承担了太多的技术债务,以至于很难维护代码并添加新功能。我很想听听其他人如何解决这种问题。

19
过度使用或滥用的编程技术
您是否发现编程中有任何过度使用(IE过度使用的技术)或滥用技术,或者对所有事物都使用了一点技术,而又不能很好地解决人们试图解决的许多问题解决它。 它可以是正则表达式,某种设计模式或算法,也可以是完全不同的东西。也许您认为人们滥用多重继承等。
38 design 

17
在休假时,您如何回应“紧急联系信息”的要求?
我想休假,根本不考虑工作,但他们希望我在紧急情况下(服务器停机,Web服务故障等)为他们提供联系电话。恐怕它会被滥用(例如,在尝试一切之前,他们会与我联系),但我也认为,即使在休假期间,我也不应打扰我。有人在这种情况下有经验吗?巧妙的方法是什么?有创意的解决方案吗?
38 support 

10
如何学习算法和数据结构?[关闭]
这是我先前的问题的延续,我曾问过有必要学习算法和数据结构。我觉得是的。 现在,我在这样的环境中工作:我永远不会有机会通过实验或实践或任何作业来学习它。什么是正确的方法,例如正确的书籍,正确的问题,正确的资源,我可以花六个月或一年或两年的时间来学习算法和数据结构?并且以一种可以将问题与数据结构和算法相关联的方式来塑造我的思想。

9
面试后被拒绝后问原因是否合适?[关闭]
我以为我在面试中还可以,但显然面试官并不这么认为。收到拒绝电子邮件后,问原因是否合适?毕竟,我不想惹恼人力资源人员。 我是一名学生,所以到目前为止没有太多的求职经历。如果这个问题听起来很愚蠢,请忍受。
38 interview 

26
您希望语言设计师注意什么?[关闭]
这个问题的目的不是要整理一些编程语言功能,这些功能是您不能没有的,或者希望使用您选择的主要语言。这个问题的目的是揭示大多数语言设计师可能没有想到的语言设计的角落。因此,与其思考语言特征X,不如多加思考。 我的偏见之一,也许是有争议的,是工程学的较柔和的一面(为什么和为什么)比更为具体的一面要重要许多倍。例如,Ruby的设计目标是提高开发人员的满意度。尽管您对于是否可以交付发表意见不一,但事实上这是一个目标,这意味着语言设计中的某些选择受该哲学的影响。 请不要发布: 语法火焰大战。面对现实,我们有我们的喜好,语法很重要,因为它与语言设计有关。我只是想避免emacs与VI的本质之间的史诗般的战斗(如今,很多人对此一无所知)。 “任何不具有功能X的语言都不应该存在”类型注释。所有编程语言都存在的至少一个原因-好的或坏的。 请做后: 语言设计师似乎错过的哲学思想。 似乎实施得不好的技术概念经常会出现。请提供一个示例,说明造成疼痛的原因,以及您对如何使其功能有任何想法。 您希望的东西在平台的公共库中,但很少。一个相同的标记,通常在您希望的公共库中没有的东西。 您希望所有编程语言都能正确实现并正确定义的概念性功能(例如内置的测试/声明/合同/错误处理支持)。 我希望这将是一个有趣而有趣的话题。 编辑:澄清了我的意思是语法火焰战争。我并不是想避免对语法的所有讨论,特别是因为语法是程序语言设计的基础部分。

13
拥有自己的网站重要吗?[关闭]
它有多么必要或重要?我尝试保留一份要跟踪的博客或网站的连续列表,但是很多时候我提取某人的个人资料并注意到那里没有任何内容。真的重要吗? 我知道编程水平不同(从C / C ++系统程序员到Rails,甚至是Haskell和J),而且并不是每个人都可以轻松地使用基于Web的应用程序的语言。并非所有内容都以网络为中心,但是随着许多流行的,有时是免费的服务的出现,我认为期望大多数程序员拥有一个个人站点并不是不合理的。

24
什么是抽象?[关闭]
对于程序员所使用的编程抽象,是否存在公认的定义?[请注意,不要将编程抽象与“抽象”一词的字典定义混淆。]是否存在明确的甚至是数学的定义?有哪些清晰的抽象示例?

20
触摸打字的重要性有多大?[关闭]
当您已经是一名程序员时,您是否学会了触摸打字?如果是这样,它如何影响您的生产率?还是您仍然无法触摸文字,您认为它会阻碍您前进? 史蒂夫·耶格(Steve Yegge)认为,这很重要, 就我个人而言,我并没有注意到太大的差异,这可能是因为我实际花费的时间不到实际打字时间的25%(当时我正在从事大型遗留项目,而我却花了更多时间阅读和调试现有代码。)

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.