软件工程

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

26
您遇到的最糟糕的反模式[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 作为程序员,您在职业生涯中遇到过的最糟糕的反模式是什么? 我主要参与Java,尽管它可能与语言无关。 我认为最糟糕的是我所说的主要反模式。这意味着程序由包含所有逻辑的单个非常大的类(有时伴随一对小类)组成。通常情况下,这是一个包含所有业务逻辑的大循环,有时会有成千上万的代码行。

12
C#的属性销售操作员
c#中的null-coalescing运算符使您可以缩短代码 if (_mywidget == null) return new Widget(); else return _mywidget; 向下: return _mywidget ?? new Widget(); 我一直发现,我想在C#中拥有一个有用的运算符,它将允许您返回对象的属性,或者如果对象为null则返回其他值。所以我想替换 if (_mywidget == null) return 5; else return _mywidget.Length; 带有: return _mywidget.Length ??! 5; 我不禁想到该操作符不存在一定的原因。它有代码味吗?有没有更好的方法可以写这个?(我知道空对象模式,但是用它来替换这四行代码似乎有点过分。)
9 c#  code-smell  null 


6
您如何与过于害怕阅读和接触PHP代码的网页设计师打交道?
我已经被录用创建网站并正在与设计师合作(他恰好是与客户联系并雇用我的人,所以不,我不能踢他的屁股=))谁太害怕了接触php代码,并且在html和css中太新手,无法给我足够好的模型,因此,今天的工作将通过他的半编程页面的新html模型进行,并删除<div>s和更改类等。 是否有某种工具或更好的工作流程来使我们俩都更容易?也许我完全是用错误的方式来处理这个问题,我是Web开发的新手,而且我不了解足够的HTML / CSS(他理应如此),无法让他给我一个图形模型并执行整件事,所以我们正在做的是他给了我一个看起来像他想要的静态HTML页面,我把<?php ?>它放了=) 谁能给我一些建议吗?
9 php  html  css  workflows 

4
用于编写国际象棋引擎的范式是什么?
如果要编写国际象棋游戏引擎,您将使用哪种编程范例(OOP,过程等),为什么要选择它?象棋引擎是指程序的一部分,它可以评估当前板并确定计算机的下一个动作。 我问是因为我认为写象棋引擎可能很有趣。然后我想到可以将其用作学习函数式编程的项目。然后我想到有些问题不太适合功能范式。然后我想到这可能是很好的讨论饲料。

2
什么是设计Web应用程序的合理工作流程?
自从我进行了大量的Web开发以来,已经有一段时间了,我想利用最新的实践,但是我一直在努力使工作流程可视化以合并所有内容。 这是我要使用的内容: CakePHP框架 jsmin(JavaScript Minify) SASS(语法上很棒的StyleSheets) 吉特 CakePHP: 自我解释,修改和更新源代码。 jsmin: 修改脚本时,您是手动运行jsmin来输出新的缩小代码,还是最好运行预提交钩子来自动生成已更改的javascript文件的jsmin输出。假设我不了解实现提交挂钩。 SASS: 我真的很喜欢SASS所提供的功能,但是我也知道默认情况下浏览器不支持SASS代码,因此在某些时候,需要将SASS代码转换为普通的CSS。在工作流中的什么时候完成了。 吉特 我很害怕承认这一点,但是,上一次我进行任何实质性的Web开发时,我没有使用SCM源代码管理(即,我确实使用了源代码管理,但它包含非常详细的更改日志和备份)。 从那以后,我在使用Git(以及Merurial和SVN)进行桌面开发方面拥有丰富的经验,但是我想知道如何在Web开发中最好地实现它。 在Web主机上实现远程存储库是一种常见的做法,以便我可以将更改直接推送到生产服务器,还是有一些跨平台(windows / linux)工具可以轻松地将更改后的文件仅上传到生产服务器。是否有网络托管公司可以轻松实现远程存储库,我是否需要SSH访问等? 我知道如何在具有独立的远程跟踪分支的远程存储库的我自己的测试服务器上完成此操作,但是我以前从未在远程生产Web托管服务器上完成此操作,所以我还不知道这些选项。 额外: 我正在考虑实现一个javascript框架,其中将页面上使用的单独javascript文件编译为生产服务器上每个页面的单个文件,以限制每页所需的文件下载数量。 这样的东西已经存在了吗?是否已经有一个狂野的开源项目实现了我可以使用和贡献的类似功能? 考虑到网络开发人员对性能的偏执(以及网站上文件请求的数量严重影响性能的事实),我猜想网络上已经有一些巫师黑客已经解决了这个问题。

3
谁能推荐TSQL的编码标准?
长期以来,我们已经为.Net代码制定了编码标准,并且随着时间的流逝,似乎有一些声誉卓著的来源来提出如何应用它们的想法。 我希望能够为我们的产品编写用于编写的SQL的一些标准,但是对于确定良好编写的SQL的共识,似乎没有任何资源。

6
为什么建议在安装新程序之前关闭所有程序?
在其他程序运行时安装新程序会引起什么问题?我以为GAC解决了共享DLL被锁定的许多旧问题。那么什么样的问题仍然出现呢?我可以肯定地看到升级单个程序的问题,但除此之外,很难理解为什么应用程序会each脚在彼此的脚趾上。
9 .net  installer 

5
按小时/项目计费[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 7年前关闭。 这与我之前提出的问题有关-https: //softwareengineering.stackexchange.com/questions/34023/how-to-end-a-relationship-with-a-client-without-pissing-them-off 按小时收费与按项目收费相比,您有什么义务?如果您同意承担一个项目,请粗略估算一下,您可能需要10天的时间进行工作,并每小时收取£X的费用-您有义务在这10天结束后免费工作,而您仍然没有得到管理由于意外问题而完成您的项目?如果您已经交付了该项目但发现了错误,该怎么办?如果10天后您应该免费修复这些错误,还是应该向客户收费? 此外,对于上述项目,当您开始该项目时,结果会是什么,但是在10天之后,无论出于何种原因,您都必须放弃并告诉客户您不再可以这样做了?我意识到这无助于建立您与客户的声誉和关系,但是您是否有义务偿还所付给您的款项,或者您只是交付了一半/即将完成的源代码并帮助他们找到其他人来完成它? 我问上述问题的原因是因为我对自由职业还很陌生,并且想知道如何解决以上情况。谢谢!


2
API应该使用en_US还是en_GB或两者都使用?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我应该用美式拼写还是英式拼写编写API?还是我应该将它们都映射到一个并在内部使用我喜欢的任何人来使它们都能工作?目前,大多数API都使用美国拼写。有什么解决方案? 编辑:有没有一种方法可以对此进行标准化。可能两者都支持?

4
单元测试的新名称[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我从不喜欢单元测试。我一直认为这增加了我要做的工作量。 事实证明,仅就您编写的实际代码行数而言,这是正确的,此外,您可以在一小时内通过测试和测试驱动的开发编写的有用代码的行数增加完全抵消了这一点。 现在,我喜欢单元测试,因为它们允许我编写有用的代码,而这些代码通常在第一次使用时就可以使用!(敲木头) 我发现,如果人们在严格的时间表内或在其他人不这样做的环境中,他们不愿意进行单元测试或以测试驱动的开发开始项目。有点喜欢,一种文化拒绝甚至尝试。 我认为关于单元测试的最强大的功能之一就是它给您进行重构的信心。这也给我带来了新的希望,我可以将我的代码提供给其他人进行重构/改进,并且如果我的单元测试仍然有效,那么我可以使用他们修改过的新版本的库,几乎不用担心。 我认为这是单元测试的最后一个方面,需要一个新名称。单元测试更像是该代码现在和将来应该做什么的合同。 当我听到“测试”一词时,我想到了关在笼子里的老鼠,并对其进行了多次实验,以观察化合物的有效性。这不是单元测试,我们不是在尝试不同的代码来了解什么是最有影响力的方法,而是在定义我们期望的输出和输入。在老鼠的例子中,单元测试更像是宇宙如何工作的定义,而不是在老鼠身上进行的实验。 我是处于崩溃状态还是其他人看到拒绝进行测试,他们是否认为这是他们不想这样做的类似原因? 您/其他人给出不测试的原因是什么? 您认为他们的动机不是单元测试吗? 作为单元测试的新名称,它可以克服某些异议,jContract呢?(我知道一点Java中心:)还是单位合同?

5
良好的Web服务器开发设置建议[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 一个月左右前,我创建了我的第一个LAMP堆栈,并实现了一个简单的网站,该网站使用了该首字母缩写词。但是,我的开发设置远不理想。我实际上没有本地测试服务器,但是我是在vim中编写所有CGI脚本的,同时以root身份登录到远程计算机中。现在,我打算开始更认真的发展。 问题:什么是好的设置,以便尽可能轻松地进行开发? 我想了解IDE,subversion(或替代方案),上载和下载内容以及最佳实践等方面的可用功能。所有这些我都是新手。另外,请随时向我指出良好的网站。网站很多,但是只有那些已经在大量开发Web内容的人才能快速确定自己是否是好网站。

4
Java抽象类命名
例: 您为Ajax操作创建一个抽象类。不同的Ajax操作都将扩展此类。 问题: 您将类命名为AjaxAction还是AbstractAjaxAction吗? 创建子类时,是否给它们命名: 行动 AjaxAction 只要给他们起名字就好 我一直找不到“正式”约定。我看不到子类中需要 “抽象”前缀或任何必需的命名约定。(可能仍然适合,具体取决于。) 有正式的公约吗?你能把我链接到它吗?您对此主题有何看法?
9 java  naming 

5
您的敏捷/ Scrum团队的错误工作流程是什么?
您的敏捷/ Scrum团队的错误工作流程是什么? 这是我们的:-如果该错误与当前sprint中的一个故事有关,我们将对其进行修复。-如果错误与当前sprint中的故事无关,并且不重要,则将其发送给产品所有者以进行优先级排序。-如果该错误与sprint中的故事无关,并且非常重要,则我们将其修复。
9 agile  bug  scrum  workflows 

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.