Questions tagged «programming-practices»

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


14
一般而言,编程或计算机科学都与算法有关吗?
作为一名研究生,我发现越来越有声望的公司(例如Google,Facebook,Microsoft等)将算法问题放入他们的测试和面试中。我申请过的一些创业公司也询问了算法。我想知道对于这些公司的软件开发人员来说,算法流畅性是否最重要? 如果答案是肯定的,那么有效学习和实践算法的最佳方法或资源是什么?我似乎对解决大多数教科书或网站中似乎过于复杂的问题没有兴趣。尽管很容易理解基本算法(如quicksort,bubblesort等),但我发现很难记住它并以后再使用。 谢谢。 P / S:如果您问我喜欢什么,它正在构建优秀的软件,以创新方式解决用户的问题。我想这并不一定意味着该软件必须非常复杂。


7
具有定义常量的接口是不好的做法吗?
我正在用Java编写一组junit测试类。有几个常量,例如在不同的测试类中需要的字符串。我正在考虑一个定义它们的接口,每个测试类都将实现它。 我看到的好处有: 轻松访问常量:MY_CONSTANT而不是ThatClass.MY_CONSTANT 每个常量仅定义一次 这种方法是好的还是坏的做法?我觉得有点滥用接口的概念。 您通常可以回答有关接口/常量的问题,也可以回答有关单元测试的问题(如果有什么特别之处)。

8
在程序中合法使用Windows“文档”文件夹
任何喜欢“文档”文件夹仅包含放置在其中的东西的人都知道标准的“文档”文件夹完全不适合此任务。每个程序似乎都希望将其设置,数据或同样不相关的内容放入“ 文档”文件夹中,尽管事实上存在专门用于此作业的文件夹1。 为了使这听起来不空,以我的个人“ Documents”文件夹为例。我从来没有使用过它,因为在任何情况下我都不会自己将任何东西保存到该文件夹​​中。但是,它在顶层包含46个文件夹和3个文件,总共500个文件夹中的800个文件。那是我没有创建的190 MB的“文档”。显然,任何实际文件都会立即陷入混乱之中。 我的问题是:在未来5年内,是否可以做任何事情来改善这种状况,使“文档”再次变得有用?可以对程序员进行某种程度的教育吗?不要将其用作垃圾场?操作系统是否可以通过现有的API开始报告隐藏在AppData下的某些“假”位置,而仅允许Explorer和各种“打开/保存”对话框知道“真实的” Documents文件夹所在的位置?还是任何尝试都是完全徒劳的,甚至是不必要的? 1作为记录,以下是应代替“文档”使用的各种标准目录的快速摘要: RoamingAppData用于用户特定的数据和设置。这是在使用特定于用户的非暂时性的数据目录。此处放置的任何内容都可以在配置了给定用户的网络上的任何计算机上使用。但是不要在此处放置大文件,因为在这种环境下它们会降低登录/注销的速度。 LocalAppData用于特定于用户和机器的数据和设置。每个用户和每台计算机的此数据都不同。这也是放置非常大的用户特定数据的地方。 ProgramData用于特定于机器的数据和设置。无论哪个用户登录,它们都是相同的,并且不会漫游到网络中的其他计算机。 GetTempPath对于不使用时可能被擦除而不会丢失数据的所有文件。这也是缓存之类的地方,因为像临时数据一样,不需要备份缓存。将巨大的缓存放在这里,您将为用户节省一些备份麻烦。 “文档”本身应该只有不断地如果用户手动指定,通过输入路径或在保存对话框中选择使用。这是它唯一的一次过拨款挽救的东西,在“文档”。

5
从库中的STDIN读取是否被认为是反模式?
在为我正在工作的大型项目编写库时,出现了一个问题,该问题要求将令牌发送到电子邮件地址,然后传递回代码中,以供以后使用。 我的同事说,只是从STDIN中读取(使用Python:)code = input("Enter code: "),然后让用户传递它,但是对我来说,这似乎是一种不好的做法,因为该库可能(在这种情况下肯定会)用在服务器上的后台任务中。 我想知道这是否被视为反模式。

11
记录:为什么和什么?[关闭]
我从未编写过大量使用日志记录的程序。我所做的最大努力是在发生异常时捕获堆栈跟踪。 我想知道,其他人登录了多少?它取决于您正在编写哪种类型的应用程序?您发现日志真的有用吗?

5
当您无法确定布尔值时该怎么办?
我们正在为公司构建一个Web应用程序,到目前为止,该管理仅存在于Excel工作表中。到现在我们已经差不多完成了,但是最近我被分配了一个任务,将所有数据从这些工作表导入到我们的新系统中。该系统是用Java构建的,但是由于这种导入只是一次性的事情,因此我决定改用Python编写脚本,然后直接通过SQL查询将其导入。问题来了。新数据模型包含一些新属性,这些新属性未包含在其现有数据中。在大多数情况下,这不是问题,我在找不到信息的地方放了一个null。但是随后我遇到了一些属性,它们是布尔值,默认情况下不能为NULL。首先,我尝试只允许数据库中的这些字段为空,但是我的资深开发人员告诉我不要这样做,因为这将来会在我们的系统中引起问题。现在我不太确定该怎么做。显而易见的解决方案是将每个未知布尔值默认设置为false,但是我认为这也是错误的,因为我实际上不知道它是否为false。 示例:假设您有一个具有hasRadio参数的实体Car。现在,您需要将数据导入此数据模型,但是在数据中只有“模型”和“颜色”列,关于是否具有无线电没有任何内容。如果设计上不能将其设置为空,那么您将在“ hasRadio”列中添加什么? 在这种情况下最好的方法是什么?我们是否应该告诉公司手动填写丢失的数据?还是默认为false?

5
您是否应该始终为网站的服务器端编程?
我即将开始为朋友创建一个音乐项目网站。现在它应该很简单:没有动态内容(游览日期等),只不过是一些嵌入式样本歌曲或SoundCloud链接。我不希望在响应式网格上使用除香草JavaScript和Bootstrap或Foundation之外的任何东西。 够了吗?我可以简单地将HTML,CSS和JS文件上传到主机并完成操作,还是应该花时间在Node或PHP中对后端服务器进行编程?

7
作为独立的初级开发人员,我如何审查自己的进度[关闭]
我目前在一家2人公司工作,担任主要开发人员。我的老板得到了客户,模拟了一些png设计模板并将其交给我。 这个系统运行良好,我真的很喜欢它。 我从事的项目类型是针对中小型企业的,他们通常需要CMS系统。从头开始开发,我将为客户构建定制的后端,以添加/编辑/删除类别,标签,产品等,然后根据交给我的设计模板将它们输出到前端。随着时间的流逝,项目变得越来越复杂,具有购物车/订购功能和其他常见的电子商务类型功能。 同样,该系统运行良好,我真的很喜欢它。 我的问题是我作为程序员的个人发展。我有很多业余时间阅读编程博客,通过stackexchange进行检查,阅读建议的编程书籍(目前为止在“ The Pragmatic Programmer ”上,到目前为止还算不错),进行脑部锻炼(lumosity.com和khanacademy数学问题),做了很多工作。体育锻炼和其他个人发展型活动。 但我不禁感到,我在反馈,评论方面漏了一点。我的老板很棒,从来没有对我的工作赞不绝口,但是不幸的是他要么忙于检查我的代码,要么说实话,我不认为这是他的专业之一,因此无法提供反馈。 我想知道我在做错什么,在做正确的事情。我是否应该在控制器中添加这么多的逻辑,是否对代码进行足够的调制等? 因此,我所做的就是开发了一个小型的“家庭预算”应用程序,并尝试按照我目前所知道的那样干净有效地进行操作。 我想知道的是,我可以在哪里提交此应用程序,并请一些经验丰富的开发人员提供反馈。这不仅是我的代码的一个子部分,如“ codereview.stackexchange”似乎需要,而且我的整个工作流程都需要批评。 我知道这是一个要问的问题,我希望给出的主要建议是在团队中寻找工作,这当然是我以后将要研究的内容,但是现在我想坚持我的当前做法。就业情况,但只是不想养成太多的坏习惯。 让我知道是否可以提供进一步的信息以帮助澄清,或者如果这不是我事先表示歉意的合适位置。不想使用reddit,因为我觉得这个社区培养了更多经过深思熟虑的回应。


8
真正的BIG源代码提交是什么术语?[关闭]
有时,当我们检查软件的提交历史时,我们可能会发现确实有一些提交是非常大的-它们可能会更改10或20个文件,其中包含数百个更改的源代码行(增量)。我记得有一个用于BIG提交的常用术语,但是我不记得确切的含义。谁能帮我?程序员通常用来指代这种BIG和巨型提交的术语是什么? 顺便说一句,一起做出很多更改是一种好的做法吗? 更新:谢谢你们的启发性讨论!但是我认为“代码炸弹”是我想要的术语。


9
学校为什么要在List上教数组?[关闭]
我学校中大部分的初始编程课程作业都要求我使用数组。我现在全职工作,而且从未将数组用于我从事的任何项目。即使在现有的项目中,我也从未见过在任何地方使用数组。我认为,List更易于使用,是一个标准。教授为什么要告诉学生在作业中使用数组?只是为了让学生了解基础知识? 由于大多数大学都教授Java,因此这个问题是Java特有的。

8
OOP是变得容易还是困难?[关闭]
几年前,当面向对象编程的概念被介绍给程序员时,它看起来很有趣并且编程更加简洁。OOP就是这样 Stock stock = new Stock(); stock.addItem(item); stock.removeItem(item); 使用自描述名称更容易理解。 但是现在,具有数据传输对象,值对象,存储库,依赖注入等模式的OOP变得更加复杂。为了达到上述目的,您可能必须创建多个类(例如abstract,factory,DAO等)并实现多个接口 注意:我不反对使协作,测试和集成更容易的最佳实践

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.