软件工程

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

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

6
在Web应用程序中DDD聚合真的是一个好主意吗?
我将深入研究领域驱动设计,而我遇到的一些概念从表面上看很有意义,但是当我更多地考虑它们时,我不得不怀疑这是否真的是一个好主意。 例如,聚合的概念很有意义。您可以创建较小的所有权域,这样就不必处理整个域模型。 但是,当我在Web应用程序上下文中考虑此问题时,我们经常访问数据库以拉回小的数据子集。例如,页面可能仅列出订单数量,并带有单击链接以打开订单并查看其订单ID的链接。 如果我理解正确的聚集,我通常会使用存储库模式返回,将包含成员的OrderAggregate GetAll,GetByID,Delete,和Save。好的,听起来不错。但... 如果我调用GetAll列出我所有的订单,那么在我看来,这种模式将需要返回整个汇总信息列表,完整的订单,订单行等...当我只需要该信息的一小部分时(仅标头信息)。 我想念什么吗?还是在这里使用某种程度的优化?我无法想象有人会主张在不需要时返回全部信息。 当然,可以在您的存储库上创建诸如之类的方法GetOrderHeaders,但这似乎违背了首先使用诸如存储库之类的模式的目的。 谁能为我澄清一下? 编辑: 经过大量研究后,我认为这里的脱节之处在于,纯存储库模式与大多数人认为的存储库模式不同。 Fowler将存储库定义为使用集合语义的数据存储,通常存储在内存中。这意味着创建整个对象图。 Evans修改了存储库以包括聚合根,因此截取了存储库以仅支持聚合中的对象。 大多数人似乎将存储库视为美化的数据访问对象,在其中您只是创建获取所需数据的方法。正如Fowler的企业应用程序架构模式中所描述的那样,这似乎并不是目的。 还有一些人认为存储库是一个简单的抽象,主要用于简化测试和模拟,或将持久性与系统的其余部分分离。 我猜答案是,这是一个比我最初想象的要复杂得多的概念。

15
如何在非常紧凑的时间表上进行编码?
我正在做一个进度很紧的项目。我没有太多时间进行编码和测试(即使我每天工作超过12个小时,但仍会延迟),结果非常脆弱。它的代码也很两难。 我们的客户公司在许多国家/地区的所有办事处都使用此程序。我经常在午夜接到有关我们的用户/测试人员的错误或他们不知道如何使用某些功能的电话。 在这个项目上工作了三年之后,我感到非常压力,无法入睡,因为我非常担心错误和电话。 我有几个问题: 三年来,我编写的所有代码都是完美的使用场景代码(因此很容易破解)。它的设计很差,没有任何单元测试。由于这个事实,我有很多问题。因此,我想知道在项目进度很紧的情况下编写可以运行的代码是否可行? 如何在相同的时间内编写更好的代码? 睡觉时我该如何清除内心的烦恼而又不担心工作呢?


19
程序员同时从事多个项目是否正常?
在目前的工作中,我有两个项目需要处理。第一个是非常庞大的系统,第二个较小,但规模也很大(第一个项目的开发时间为12年,第二个项目的开发时间为4年)。 起初,我只从事第一个项目,并试图适应它。然后我被转移到第二个项目并在那里尝试,所以我对第一个项目的了解变得阴暗。现在,我必须同时处理两个项目。 这对我来说很难,因为尽管它们都使用Java,但是它们使用不同的框架,并且要理解的代码和业务逻辑的数量非常大,所以我真的无法将这两个项目都掌握在心中。 这是正常的,我应该习惯了,尽管我的专长变得非常谦虚,但是如果我只从事单个项目,那怎么办?还是我应该引起关注或更换雇主?


17
程序员责任法案[关闭]
因此,我们都听说过《程序员权利法案》,而XP也有类似的概念。 这些天来,我们经常听到人们对人们的权利有很多了解,但对他们的责任却知之甚少,所以程序员的责任清单上应该写些什么。那是他们应该做的事情,他们可能会觉得不愉快,但是那会使程序员在职业上和负责任的行为与不这样做的人分开。 我主要对难吃的食物和那些不太可能发生的食物感兴趣。那是程序员倾向于回避和避免的,而不是90%的程序员实际上想要做的(例如始终重构和使用源代码控制)。 那么,程序员责任法案应包含哪些内容?


8
专业发展应该在公司时间进行吗?
作为一家小型咨询公司的兼职软件开发人员,我正在努力组织时间以发展自己的软件开发知识-是否正在读书,紧跟StackOverflow上的常见问题,研究一种技术,正在深入使用,或关注Hacker News的首页。我可以从自我分配的学习时间中看到结果,但是列出和证明通过“专业发展”获得的技能和知识很困难。 该公司没有任何已定义的PD策略,并且要立即完成可交付成果存在很大的压力!在为顾问工作时。我检查了我的同事所做的事情,他们似乎没有花任何时间进行自我完善。他们只是解决他们遇到的问题,根据需要查找特定的MSDN参考,代码示例等。 我意识到,PD政策在不同规模和文化的公司之间会有所不同,像我这样的公司可能会处于边缘状态。我很想听听经验丰富的开发人员的观点和经验;特别是那些必须在其团队或公司中选择PD策略的人员。 我也想了解更彻底的PD方法,即使它们已经完全存在。看看其他人在尝试什么总是很有趣的。 并不是一个摘要,但是我想问的是: 公司分配PD时间是普遍的还是建议的? 确保开发人员的知识和技能是最新的是谁的责任? 兼职工作时间表是否应激发较低的PD工作时间比例? 开发人员如何向非开发人员同事表明阅读博客和书籍可以产生净收益? 阅读博客和书籍实际上能产生生产力吗?(欢迎引用) 写博客作为PD的一种方式有效吗?(有关“黑客新闻”的最新主题) 这是一个广泛的问题,因为我不完全知道我需要在此处提出哪些问题,因此,对于未解决的相关问题的任何想法都非常受欢迎。


5
“经常”合并是更好还是仅在功能分支完成大合并之后合并?
说多个分支正在开发中,A并且B,还有一个增量“错误修复”分支C。 现在C已经“完成”并合并到母版中。A并且B仍在开发中,并且不会在(可能)另一个错误修复分支合并到master中之前进行修复。 C尽快合并到新功能分支中是一个好主意吗?以便使新功能尽可能接近master?还是让新功能在自己的“世界”中开发,然后在完成后才合并到母版中更好? 无论如何都会有冲突,因此需要花费时间来解决这些冲突。

5
C#List <>中的.Any()有什么用?
我一直在与同事讨论这个问题,我们无法弄清楚C#中.Any任何给定的用途是什么List&lt;&gt;。 您可以像下面的语句那样检查数组中元素的有效性: if (MyList.Any()){ ...} //Returns true or false 完全一样 if (MyList.Count() != 0) { ... } 并且更加常见,易读并且清楚if声明的意图。 最后,我们陷入了这种想法: .Any() 可以使用,但效果也一样,但是对程序员的意图尚不清楚,因此不应该使用它。 但是我们觉得这是不对的。我们一定缺少一些东西。 是吗
40 c#  array  list 

6
在RESTful API中将数组作为响应返回的最佳方法是什么?
假设我们有这样的资源, book: type: object properties: author: {type: string} isbn: {type: string} title: {type: string} books: type: array items: book 因此,当某人GET在books资源上做出“ a” 时,我们将返回以下内容 [{"author": "Dan Brown", "isbn": "123456", "title": "Digital Fortress"}, {"author": "JK Rowling", "isbn": "234567", "title": "Harry Potter and the Chamber of Secrets"}] 我从某个工作人员那里听说,建议的REST做法是始终将响应作为JSON对象返回,这意味着我们的架构应books如下所示, books: type: object properties: list: type: …
40 rest  json 

3
AngularJS:使用多个ng-apps构建Web应用程序
Blogosphere上有许多关于AngularJS应用程序结构准则的文章,例如: http://www.johnpapa.net/angular-app-structuring-guidelines/ http://codingsmackdown.tv/blog/2013/04/19/angularjs-modules-for-great-justice/ http://danorlando.com/angularjs-architecture-understanding-modules/ http://henriquat.re/modularizing-angularjs/modularizing-angular-applications/modularizing-angular-applications.html 但是,对于指导原则和最佳实践,我尚未遇到的一种情况是,您有一个包含多个“迷你spa”应用程序的大型Web应用程序,而迷你spa应用程序都共享一定数量的代码。 我并不是指试图ng-app在同一页面上有多个声明的情况;相反,我的意思是大型站点的不同部分具有自己的唯一ng-app声明。 正如Scott Allen在他的OdeToCode博客中写道: 我还没有找到一种很好解决的方案,即在同一更大的Web应用程序中存在多个应用程序,并且需要客户端上一些共享代码的情况。 您是否可以建议任何建议的方法,应避免的陷阱或该场景的良好样本结构? 更新 -9/10/2015一个具有有趣组织策略的项目是MEAN.JS及其modules文件夹。 https://github.com/meanjs/mean https://github.com/meanjs/mean/tree/master/modules 另一个示例来自ASP.NET Music Store SPA示例。 https://github.com/aspnet/MusicStore https://github.com/aspnet/MusicStore/tree/master/src/MusicStore.Spa/ng-apps

17
每日站立-是或否?[关闭]
您认为每日站立会议有多有价值(或没有)? 如果您不熟悉它,则指的是Scrum拥护者(以及其他一些敏捷方法论)中的日常会议。这个想法是,您每天召开一次会议,时间限制为15分钟,每个人都必须参加会议(以鼓励人们直截了当)。 在会议上,您到处走走,每个人都说:-昨天您做了什么-您今天打算做什么-任何阻碍或阻碍您前进的障碍。 您认为这种做法有价值吗?有没有人在一个做过的地方工作,您觉得呢?

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.