Questions tagged «programming-practices»

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

7
建立完整的程序?
阅读书籍,观看视频和查看教程都很容易。做笔记和实际学习材料可能会稍微困难一些,但是即使那样,只要脑子不错并且有相当大的兴趣的人,就很容易了(更不用说了,很有趣)。 问题是,它并没有真正让您编写完整的程序或网站。假设您是那些青少年(仅在高中阶段,没有真正的(大学水平)计算机科学或编程课程,没有现实世界的经验),并且选择了Groupon。甚至甚至是马克·扎克伯格(Mark Zuckerburg),都可以肯定他是一个天才,并且他是一个非常有能力的程序员……但是如何? 您如何建议那些并非一定是编程新手,而是真正的编程真正的应用程序和真正的程序员的人去开发它?什么是“开发过程”-特别是对于单个程序员(或大约2-3个青少年)? 此外,就Web开发而言,流程是什么?像Facebook或Groupon这样的东西是用框架(例如CodeIgniter或Zend for PHP)编写的吗?还是他们开发自己的框架?我不是在问如何提出一个好主意,而是要如何有效地实施好主意?有人咨询吗? 我已经阅读了几本有关C和C ++的书籍(主要是C编程语言和C ++编程语言),并读过AP Computer Science(以及一些其他有关Java和OOP的书籍)。我还阅读了一些有关PHP(和CodeIgniter)和Python的教程。但是我还在读高中,从技术上讲,我的年龄还不够大,无法在实习中工作几个月。

6
演讲者会为技术演讲获得报酬吗?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我很好奇演讲者(博客作者,Matt Cutts等Google员工)是否可以在会议上发言而获得报酬。如果这样做,多少钱?如果他们不这样做,或者他们得到的报酬太少,就好像他们没有那样,为什么呢?除了金钱以外,还有哪些吸引开发人员进入公众场合的吸引力?

2
Python中流控制的例外是最佳实践吗?
我正在阅读“学习Python”,发现了以下内容: 用户定义的异常也可以表示非错误情况。例如,当找到匹配项时,可以对搜索例程进行编码以引发异常,而不是返回状态标志以供调用方解释。在下面,try / except / else异常处理程序执行if / else返回值测试器的工作: class Found(Exception): pass def searcher(): if ...success...: raise Found() # Raise exceptions instead of returning flags else: return 因为Python是动态类型化的,并且是内核的多态形式,所以通常使用异常而不是哨兵返回值来表示这种情况。 我已经在各种论坛上多次讨论过这种问题,并且使用StopIteration结束循环对Python进行了引用,但是在官方样式指南中找不到很多(PEP 8附带提供了一个流程控制异常引用)或开发人员的声明。有没有官方声明这是Python的最佳做法? 这(作为控制流的异常是否被认为是严重的反模式?如果是,为什么?)也有几个注释者指出此样式是Pythonic。这是基于什么? TIA


5
创建编码标准文档
我在一家控制系统公司工作,主要工作是SCADA和PLC以及其他控制系统。 除非决定创建内部项目管理和评估系统,否则软件开发实际上不是公司要做的事情。 这个项目最初是由来这里从事软件工作的人们承担的,我们大多是初级的。 该项目起初很小,所以我们只记录设计,数据库等内容,但我们从未真正同意编码格式/惯例。 我们开始使用StyleCop来确保我们已编写了完整的代码,但是我认为我们需要一个正式的文档来编写编码约定/实践,以便我们可以继续制定一个良好的标准,并且如果将来还有其他重要的开发工作(无论谁在此工作),具有良好的底板。 问题就出在这里,我不知道如何起草编码惯例和标准的文档,我所能想到的只是良好实践与不良实践的例子(例如,在命名变量,避免匈牙利符号等情况下的驼峰案例),我们都是能干足够的程序员(显然),但是我们只是没有关于这类东西的章程。 首先,我的问题是:好的编码标准文档的关键方面和内容是什么?

3
什么时候可以使用并行阵列?
我一直在尝试使用所谓的“并行数组”或列表的代码(新代码)。意味着有2个数组包含相关数据,并通过它们在数组中的位置(索引)进行链接。 我认为这很容易混淆,并且容易出现各种错误。我通常建议的解决方案是创建一个名为CompanyCompanyId和CompanyName 的对象。 一个非常真实的例子: List<string> companyNames; List<int> companyIds; //...They get populated somewhere and we then process for(var i=0; i<companyNames.Count; i++) { UpdateCompanyName(companyIds[i],companyNames[i]); } 这些并行数组是否被认为是不好的做法?

8
编码前的概念和设计:这是多少?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 我在学校和其他地方都学到,良好的开发方法在正确编码之前需要概念和设计。 即使对于初学者,这也不是一个新信息。但是,我想知道这是否是一个好的建议,因为自从我开始使用多种编程语言进行开发以来,自从开始以来就从未成功设计和构思过所有东西。 我的意思是,我总是融合设计,概念和编程。我是世界上最糟糕的开发人员,还是我们在学校学到的想法只是一种古老而毫无意义的宗教教条? 我们如何甚至可以构思和设计以前从未经历和编程的东西?是不是很荒谬?编程不是主导概念和设计吗?

4
错误抑制不良做法吗?
在一个SO问题上,我在这里问了一些我不确定的代码,有人回答说:“ BTW,那里的代码很糟糕:它经常使用错误抑制符号(@)。” 有什么不好的做法吗?具有以下内容: $db=@new mysqli($db_info) or die('Database error'); ,它使我仅显示自定义错误消息。如果没有错误抑制,那么它将仍然显示以下典型的PHP消息: 警告:mysqli :: mysqli():php_network_getaddresses:getaddrinfo失败:此类主机未知。在一些\文件\路径上线6 以及“数据库错误”。 抑制错误总是不好的,如果是这样,那么上述问题到底是不好的? 更新:我正在使用的实际代码是: or error('Datatabase error', 'An error occurred with the database' . (($debug_mode) ? '<br />MySQL reported: <b>' . $db->error . '</b><br />Error occurred on line <b>' . __LINE__ . '</b> of <b>' . __FILE__ . '</b>' …

5
当他们的团队多年来缺乏产品创新,不使用项目mgmt方法并保持不良的软件开发实践时,如何做为开发人员?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我有兴趣知道如何处理当前的软件开发流程,该流程多年未变,最终会导致产品和团队失败。是的,解决这个问题的更简单方法可能是换工作,但是有了这种经济,说起来容易做起来难。但是,如果您有特定的示例,并且在相同的情况下曾经或多次出现,并且认为解决这些问题的最佳解决方案是离开公司,那么请支持您的回答。关键是,这个问题确实有答案,特别是如果该主题的多个专家最终指出最好的路线是:路线A。 我知道成千上万的开发人员曾经或正在经历类似的情况。这是公司从在市场上排名第一变为最后甚至退出市场的主要原因之一。希望本文中的答案能够帮助其他面临类似障碍的开发人员。在小型或大型开发团队中,通常会发生以下情况: 一些开发人员似乎并不在乎并决定顺其自然,而宁愿让代码充满很多代码味道,保持开发流程不变, 其他人厌倦了不变,辞职并搬到另一家公司, 其他人似乎害怕说话,宁愿保持沉默, 有时,很少有开发人员或只有一个开发人员试图说出要改进产品的情况,并告诉团队遵循最佳编码实践的重要性和对客户,用户和团队的益处。这些类型的开发人员通常由于诸如公司提供的收益,软件公司提供的收益很少,产品具有很大的潜力等原因而决定留在团队中。 我们团队中的产品仅是公司从中获得收入的一小部分,因为它拥有大量产品(该公司不是软件/硬件公司;因此,至少在目前,没有持续的专利诉讼可创造工作机会)不稳定)。这些年来,我从其他开发人员的经验中学到的东西是,要真正认识一个开发团队,需要花费时间,而不是几天或几周,而是几个月。在面试过程中,团队是否要雇用您或需要您;它们使一切听起来很棒,并且它们可能会告诉您您想听的内容。但是,当您开始在该团队中工作并开始深入研究代码并迈向完整的SDLC流程时,现实就不同了。这是作为开发人员时,您开始看到自己从事的工作的现实。这种现实使得很难从一家公司转移到另一家公司,因为很难知道您所迁移的公司是好是坏。是的,您可以阅读Glassdoor的评论等。但是,这些在线评论中有多少是真实的,而不是来自HR? 考虑到经理从一开始就一直拒绝更改,而以前的开发人员已经这样做了多年,那么解决以下概述的问题的最佳方法是什么? 多年来缺乏产品创新:产品具有巨大的潜力,并为公司带来了可观的收入,但产品看起来像20年前制造的。一些用户抱怨该产品不友好,不直观,而另一些用户则提到该产品已用于Gmail等应用程序,并且由于不具有类似功能而在使用该产品时感到沮丧。这里的主要问题是,当您作为开发人员尝试对产品进行更改并开始将产品的主要元素移开几个像素(以使其更加用户友好或直观)时,经理会慌张并告诉您把它放回原处。如果您尝试添加对用户有利的功能,经理会要求您删除它,因为“用户习惯于按原样进行处理等。” 我认为您理解了变革,改进和创新的阻力(即使您作为开发人员提供了强有力的利益主张,经理也不愿意改变)。公司在该领域有一些竞争对手(其中的几个产品更具竞争力),但是公司以某种方式保持了现有客户多年。 缺乏项目管理协调:因此,一些项目交付较晚,存在错误,有些客户抱怨(客户也报告错误),或者在交付项目之前预算太快等。我已经提供了它们一些项目协调技巧,并且现在定期使用这些想法来跟踪项目和要完成的任务的进度。 不良的软件开发实践:在大多数(如果不是全部)文件上看到代码异味,没有文档,代码冗余,在同一文件上混合了前端层和后端,过时的开发工具,没有真实的测试环境或测试工具(只需复制和粘贴)文件从开发环境到生产环境,然后手动进行测试,看情况是否良好并发布)。我用于开发和测试的大多数开发工具都是团队不知道的,因为团队仅使用2个IDE进行代码开发,而源代码控制仅适用于开发环境。其他开发人员试图使用最新的框架来改善当前问题,但是经理不喜欢它,因为“如果离开,那么谁来维护该代码?让我们保持现状”,其中一些开发人员已经离开并搬到另一家公司。 综上所述,我确定其他公司的许多开发人员也会遇到类似的情况,但是由于情况不同,开发人员可能更愿意留在团队中而不是去其他公司,原因是(工作便利,工作灵活性,公司收益或只是因为还没有一个更好的机会)。我没有一家完美的公司,但是作为开发人员,您将如何处理和解决所有这些问题,以保持积极的态度,并最终促进变革,以改进产品并改善软件开发流程(无论您是否有很多)多年的开发经验还是仅几个)?我知道这是一篇很长的文章,但是我希望提供更多细节,以增加获得更多有用反馈的机会。 非常感谢您的反馈和时间

6
如今,游戏开发使用了哪些技术?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 每当我在在线论坛上问有关游戏开发的问题时,我总是会得到一些建议,例如学习画线算法,位级图像处理和视频解压缩等。 但是,以《战神3》之类的游戏为例,我很难相信可以使用如此低级的技术来开发这些游戏。 此类游戏的绝对威力无视任何可理解的(对我而言)编程方法。 除了游戏硬件,现在确实是个怪物。因此,有理由认为开发人员将在更高的抽象水平上工作。 游戏行业中最新的开发方法是什么?一个由30-35个开发人员组成的团队(其中大多数是管理和市场营销人员)如何能够制作出令人难以置信的游戏? 如果问题看起来太笼统,您能否解释《战神3》的体系结构?或者您将如何制作克隆?我认为应该客观地负责。

7
防御样板?
对我来说,样板代码显然是不好的。但是我遇到了一个开发人员,他在减少样板方面表现出了抵制。我意识到,随着时间的流逝,我对这种厌恶情绪还没有形成,经过深思熟虑的论点。 为了使我能够形成一个令人信服的理由,即主张减少样板,有哪些反对意见?换句话说,支持样板的论点是什么(如果有)? (我的意思是我通常认为是样板程序,但是一个很好的例子是Java中的getter和setter方法。)

11
您如何跟踪代码作者?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 这是我从未教过的东西。我见过很多不同类型的创作风格。我主要使用Java和Python进行编码。我想知道是否有标准的创作风格,或者是否一切都是自由风格。另外,如果您回答,您会介意附加用于创作在家或在办公室创建的文件的样式。 我通常只是去 @author garbagecollector @company garbage inc.

12
程序员今天如何“微优化”?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 回到“好日子”,当我们将共享软件复制到软盘上供朋友使用时,我们还使用了一些汇编程序。有一种常见的“微优化”实践,您会凝视组装线,直到找到一种方法来用更少的指令来表达它。甚至有句谚语在数学上是不可能的:“ 您总是可以再删除一条指令。 ”鉴于如今,对于大多数(大多数)编程而言,通过小的常数因子来更改运行时性能已经不是主要问题,程序员正在转移这些微型代码。其他地方的优化工作? 换句话说,可以将最佳实践带到不再增加任何价值的极端状态吗?而是在浪费时间吗? 例如:程序员是否浪费时间推广只能从一个地方调用的私有方法?是否浪费时间减少了测试用例数据?程序员(仍然)过分担心减少代码行吗? 下面是我要寻找的两个很好的例子:(1)花时间找到正确的变量名,甚至重命名所有内容;(2)删除甚至是次要和脆弱的代码重复。 请注意,这与“ 您针对什么进行优化? ” 问题不同,因为我要问的是其他程序员似乎想最大化使用什么,这些问题的耻辱是“微”优化,因此不能有效地利用时间。

9
我如何在学校引导一个软件开发社区?
我是南佛罗里达大学的学生,他对计算机科学计划的教育环境感到沮丧。现在,我正在学习“程序设计”。我应该学习如何将我的源代码组织为功能和模块,以使我的程序易于阅读和维护。取而代之的是,我正在学习C语言中的数组和递归。下学期,我必须学习“面向对象的设计”,这是通过C ++进行教学的(shudder。) 两年前,我爱上了编程,从那时起我一直在学习尽可能多的东西。参加另一门C ++类的前景让我几乎哭了。因此,我认为我将成立一个编程俱乐部,以便结识同样有志向的学生,学习新语言,讨论软件开发主题并与其他学生开发人员一起工作。 但是,我开始意识到可能没有其他学生分享我的软件开发经验。这不是因为缺乏动力而是因为缺乏机会:我只知道一个编程类(“编程语言”),而没有关于实际软件开发的类。其他人只有使用C和C ++编写琐碎脚本的经验。 我已经意识到,如果我想与其他学生软件开发人员一起工作,我将不得不自己培训他们。现在,我正计划使该俱乐部成为软件开发训练营,教会员如何使用现代工具和语言开发软件。显然,采用许多可能的方法来启动一个非正式的软件开发课程是一项艰巨的任务。亲爱的读者,我对您的问题是 我的进攻计划是什么? 我是不是该 自己给俱乐部讲课,试图平衡俱乐部工作与家庭作业? 要求CS教授在其专业知识范围内教授与会员无关的话题吗? 尝试在学校内部或外部寻找一个富有同情心,经验丰富的开发人员,谁可以分担我的工作量? 显示视频讲座(来自MIT OpenCourseWare,Google Tech Talks等)? 举办动手编程研讨会? 分配作业? 还有其他事吗

17
您认为什么是软件缺陷的主要原因(以及如何将其最小化)[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我将缺陷定义为: “应用程序设计或代码中的某些阻止其按要求运行的功能。” 我正在寻找有关缺陷原因的想法,例如人为因素,缺乏测试,缺乏原型设计以及减轻这些缺陷的可能想法。

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.