Questions tagged «programming-practices»

编程实践是软件开发中常用或不常用的实践。这些可以包括敏捷开发,看板,编码快捷方式等。

9
关于说服老板代码审查是一件好事的提示[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 假设一个假设的公司中有一个工作,该公司中有几个开发人员很少在项目上一起工作,而Boss认为代码审查不值得花费时间和成本。 在此方案中可以提出哪些各种参数,这些参数将说明代码审查的好处?此外,这里反对代码审查的潜在论点是什么?如何应对?

7
将某些值存储为字符串是不好的做法吗?
那是一个非常模糊的标题,但我想不出一种更好的措词。但是,作为一个示例,请考虑游戏中角色的前进方向。先使用字符串然后再执行类似操作,这是一种错误if(character.direction == "left")。在我看来,它为愚蠢的错误留了太多的空间,例如不小心使用Left或l或而不是left。我的怀疑正确吗?如果是这样,实现这种目标的首选方式是什么?

5
“深度合成层次结构”也不难吗?
抱歉,“合成层次结构”不是问题,但我将在问题中解释我的意思。 没有任何OO程序员没有遇到过“保持继承层次结构平坦”或“优先考虑继承而不是继承”等变体。但是,深层次的组合层次结构似乎也存在问题。 假设我们需要一组详细说明实验结果的报告: class Model { // ... interface Array<Result> m_results; } 每个结果都有某些属性。其中包括实验时间以及实验各个阶段的一些元数据: enum Stage { Pre = 1, Post }; class Result { // ... interface Epoch m_epoch; Map<Stage, ExperimentModules> m_modules; } 好,很好。现在,每个实验模块都有一个描述实验结果的字符串,以及对实验样本集的引用的集合: class ExperimentalModules { // ... interface String m_reportText; Array<Sample> m_entities; } 然后每个样本都有...好,您得到了图片。 问题是,如果我要在应用程序域中对对象建模,这似乎是很自然的选择,但是最终,a Result只是一个愚蠢的数据容器!为它创建大量的类似乎并不值得。 假设上面显示的数据结构和类正确地对应用程序域中的关系建模,是否有更好的方法可以对这种“结果”进行建模,而无需求助于深层次的构成层次结构?是否有任何外部环境可以帮助您确定这种设计是否是好的?

5
设计语言是否可以强制执行“干净代码”?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 因此,我正在用C ++编写我的第一个项目,似乎需要更多的精力来使代码“干净”,而不仅仅是工作。也就是说,似乎C ++允许编写丑陋但有效的代码。 这让我开始思考, 编程语言可以通过设计强制执行干净的代码吗?已经有这样的语言了吗? 另外,如何将其作为设计原则纳入编程语言开发/理论中?使用什么样的措施?

8
程序员有时对自己的代码不具有100%的清晰度是正常的吗?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我不是专业的程序员,所以这也许就是原因。但是我注意到,每当我创建复杂的代码(例如我最近制作的国际象棋游戏)时,我都可以编写正确的代码来使程序正常工作,尽管我后来发现,甚至几秒钟之后! 不仅如此,我还倾向于不考虑代码,而是直接键入。例如,在我的国际象棋游戏中,我决定使用一个五维数组来处理移动,而我发现无需过多的自觉思考就可以做到这一点。但是,当我停下来仔细阅读它时,发现对整个5维概念有所了解是很困难的,并且花了几分钟的时间才能完全了解我的操作以及代码本身的工作方式。 对于程序员来说,编写复杂的代码而一半时间都不了解他们在做什么是正常的吗?

5
调和矛盾的编程建议:在编码之前先进行工作并进行迭代与真正考虑
我是具有几年专业经验的中级程序员,并且已攻读硕士学位。在学习程序设计时,我经常听到两条看似矛盾的建议。 第一步建议是使某些东西快速工作,看看它是如何工作的(通过原型设计或非正式测试),改进版本,看看它如何工作,再加以改进……然后重复循环直到完成。 。这有时被称为“螺旋式发展”,或被表述为“早期释放,经常释放”。 第二条建议是:在编写任何代码之前,请认真考虑一下项目。 我在这两种方法上都取得了成功,我会说我同意每种哲学。 但是现在我开始处理我不知道如何完成的更复杂的项目(例如分布式应用程序和性能驱动的图形编程)。 我如何进行这些项目? 我是否只是开始编写一些东西并在进行过程中学习(平台/方法/语言/体系结构)-还是在我打开IDE之前不进行编码并进行大量研究/阅读? 如何协调这些相互矛盾的编程建议?

4
属性的XML文档中是否需要“获取或设置..”?
我正在寻找有关C#中XML注释的最佳实践的建议。创建属性时,预期的XML文档似乎具有以下形式: /// <summary> /// Gets or sets the ID the uniquely identifies this <see cref="User" /> instance. /// </summary> public int ID { get; set; } 但是,因为该属性的签名已经告诉您该类的外部客户端可以进行哪些操作(在这种情况下,这两个操作都是get和set),所以我觉得注释太闲谈了,也许以下内容就足够了: /// <summary> /// ID that uniquely identifies this <see cref="User" /> instance. /// </summary> public int ID { get; set; } Microsoft使用第一种形式,因此这似乎是一个隐含约定。但是我认为由于我所说的原因,第二种更好。 我知道此问题很容易被标记为非建设性的,但是必须评论的属性数量巨大,因此我相信这个问题有权解决。 …

7
如何成为一个好的团队合作者?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 我从12岁起就开始(一直在痴迷)编程,从汇编,C ++,Javascript,Haskell,Lisp和Qi的各种语言中我都非常了解。但是我所有的项目都是我一个人做的。 我获得了化学工程专业的学位,而不是计算机科学或计算机工程专业的学位,但是今年秋天我第一次与其他人一起从事大型编程项目,而且我不知道如何准备。我一生都在使用Windows,但是这个项目将非常适合Unix,因此我最近购买了一台Mac,希望自己熟悉环境。 去年,我很幸运地与一些朋友(包括CS专业)一起参加了黑客马拉松,令人兴奋的是,我们赢了。但是当我与他们一起工作时,我意识到他们的工作流程与我的非常不同。他们使用Git进行版本控制。当时我从未使用过它,但是从那以后我就学会了所有关于它的知识。他们还使用了很多框架和库。我必须了解Rails在黑客马拉松比赛中几乎是一夜之间(另一方面,他们不知道什么是词法作用域或闭包)。我们所有的代码都运行良好,但是他们不了解我的代码,而我也不了解他们的代码。 我听到了真正的程序员每天做的事情的引用–单元测试,代码审查,但我对这些内容的含糊不清的感觉。我通常在我的小项目中没有很多错误,因此我从来不需要错误跟踪系统或对其进行测试。 最后一件事是,我花了很长时间才能理解其他人的代码。变量命名约定(随每种新语言而异)很困难(__mzkwpSomRidicAbbrev),我发现松散耦合很困难。这并不是说我不会松散地做一些事情-我认为我对自己的工作很擅长,但是当我下载Linux内核或Chromium源代码之类的东西来查看它时,我花了数小时来尝试找出所有这些奇怪命名的目录和文件如何连接。重新发明轮子是编程上的罪过,但是我经常发现,自己写功能要比花费数小时来剖析某些库更快。 显然,以此为生的人没有这些问题,我需要自己解决这一问题。 问题:我可以采取什么步骤与其他人开始“整合”? 谢谢!

8
程序代码与OOP代码
我已经用程序样式完成了一个PHP的13000+行的项目[因为我对此非常熟悉,尽管我知道OOP],并且该项目运行得很好。 但是我应该将其转换为OOP吗?[ 因为世界上正忙着OOP ] 我的代码不需要OOP的任何功能[封装,基本上是继承...]! 所以我该怎么做? 如果将其转换为OOP,将会获得什么样的帮助?

7
在控制流使其多余的情况下应使用“其他”吗?
有时我会偶然发现类似于以下示例的代码(此函数的确切作用超出了此问题的范围): function doSomething(value) { if (check1(value)) { return -1; } else if (check2(value)) { return value; } else { return false; } } 正如你所看到的,if,else if和else语句与配合使用return的语句。对于一个偶然的观察者来说,这似乎很直观,但是我认为(从软件开发人员的角度来看)删除else-s并简化这样的代码会更加优雅: function doSomething(value) { if (check1(value)) { return -1; } if (check2(value)) { return value; } return false; } 这是有道理的,因为return语句后的所有内容(在相同范围内)将永远不会执行,从而使上面的代码在语义上与第一个示例相同。 以上哪一项更符合良好的编码习惯?两种方法在代码可读性方面都有缺点吗? 编辑:重复的建议已被提出,该问题仅供参考。我认为我的问题涉及另一个主题,因为我并不是要避免像另一个问题中那样重复陈述。这两个问题都试图减少重复,尽管方式略有不同。

3
即使工作顺利,与上级和老板一起审查课程是否很好?
在我公司中,在交付任何项目之前,老板要求我的前辈审查由我或其他团队成员编写的程序,有时老板也会坐在一起与我们一起审查。 我认为这是获取知识的一种好方法,但是有时候程序运行良好时,经过审查它们就无法正常工作,因此我需要再次查看我的程序。 他们说,评审有助于优化程序和查询的执行,但是相对于程序的实际功能,我们能否更喜欢优化?

5
Java Web应用程序文件夹结构
作为J2EE的初学者,我最近开始使用J2EE的核心:Servlets&Jsps从头开始开发自己的项目。 我无法评估我的项目文件夹结构是否正确。这是我的项目文件夹结构。 在问问题之前,我承认我无法回答,也无法证明有人问我为什么使用这种文件夹结构。问题:将我的jsps放在web-inf之外是一个好兆头。如果没有,为什么会这样呢?如果是,为什么? J2EE Web应用程序是否有任何标准的文件夹结构约定,我知道maven提出了一些标准,但是我们仍然可以根据我认为的要求进行自定义。 我做了一些谷歌搜索,找到了两个参考 1 2 答案不在同一页上,因此无法得出任何结论。 布局J2EE Web应用程序的文件夹结构时要考虑哪些要点,重要的是,应该将Jsps静态内容放入&为何?

11
为什么使用System.out.println()这么糟糕?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 当然,对错误消息或警告使用日志记录框架非常有用。但是有时候如果我想在短时间内尝试一些新的东西,我会使用System.out.println()。 使用System.out.println()进行快速测试真的很糟糕吗?

7
如何提高对学生的可维护性的培训?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 可维护性是专业软件开发的主要利益。确实,维护几乎始终是软件生命周期中最长的部分,因为维护从项目发布一直持续到基本上结束。 此外,维护中的项目占项目总数的绝大多数。根据http://www.vlegaci.com/298/interesting-statistics-%E2%80%93-numbers-of-programmers-in-maintenance-vs-development/,维护项目的比例约为2 / 3。 我最近遇到了一个问题,那个家伙发现他的工作主要是维护工作,对此感到非常惊讶。然后,我决定在法国软件开发专业人员社区的主要站点(http://www.developpez.com/)上进行讨论(法语)。讨论的标题是“学生是否对专业软件开发的现实进行了足够的培训?” 并且主要是关于可维护性。有人指出,至少在法国,人们没有足够的准备面对两方面的维护: 维护现有代码 制定可维护的代码 我在这里的问题与该讨论相呼应,旨在寻找一种教授维护性的好方法。 我们如何教授可维护性? 您会建议哪种运动? 如果您在可维护性方面受过良好的培训,那么您选择了哪种课程? [编辑]经过一些误会,我认为我必须澄清我的问题。作为项目负责人和软件开发人员,我经常与受训人员或应届毕业生一起工作。我曾经刚毕业。问题是学生通常不熟悉诸如SOLID之类的原理,这些原理会增加项目的可维护性。我们常常最终在使项目发展方面遇到重大困难(可维护性低)。我在这里寻找的是一个成功的关于可维护性的重要性以及如何针对此特定点编写更好的代码的成功教学的具体学术示例。或可能提出的改善学生训练方式的建议。

9
软件错误的定义。暴雪娱乐公司坚称我的“错误”根本不是错误。对吗 [关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 根据Wikipepdia, 软件错误是用于描述计算机程序或系统中的错误,缺陷,错误,故障或错误的通用术语,该错误,缺陷,错误,故障或错误会导致产生错误或意外的结果,或导致其行为异常。 最近,我在《星际争霸2》中发现了一个“错误”,该错误会产生意外的结果:http : //eu.battle.net/sc2/en/forum/topic/2868627470 问题是,如果我长时间保持StarCraft 2最小化,则游戏不会断开连接或产生任何形式的超时。但是,它确实会在第一次战斗后断开连接,有时还会丢失游戏数据(比赛统计信息)。 不幸的是,据暴雪说: 游戏的设计不能让它保持如此长时间的最小化。(暴雪)不能将此类行为视为错误,因为《星际争霸2》并非要在数小时内最小化。 那么,我的“错误”真的是错误吗?

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.