软件设计

最佳做法:许多小功能/方法,还是具有逻辑过程组件的更大功能?

编写许多小的方法(或函数)最好是将这些小过程的逻辑/代码直接写入到您将调用小方法的地方吗?即使现在只能从一个地方调用代码,将代码分解成小功能? 如果选择取决于某些标准,那么它们是什么?程序员应该如何做出良好的判断呼叫? 我希望答案可以应用于多种语言,但如果需要,给出的答案可以具体到语言或语言。特别是,我正在考虑SQL(函数,规则和存储过程),Perl,PHP,Javascript和Ru ..
发布时间:2017-05-12 19:52:04 软件设计

Ruby on Rails:按月分组博客帖子

小伙子。我创建了一个简单的博客应用程序与通常的CRUD操作。我还在PostController中添加了一个新的动作,名为“archive”和一个关联的视图。在这种观点下,我想把所有的博客帖子都带回来,并按月分组,以这种格式显示: March Hello World Blah blah 无法看到这里 ..
发布时间:2017-05-12 19:51:11 软件设计

寻找一些伟大的设计的GUI应用程序的例子

我将在大约一个月内开始开发我的下一个桌面应用程序。过去我已经发布了功能性的软件,并没有让任何人,包括我自己在可用性或美学部门中发愁。 有人知道任何资源或指南,甚至是可以在桌面软件中展示良好设计的书籍的书籍? 似乎有很多资源用于网络应用程序,但桌面应用程序的这种资源相当纤细。 / p> 解决方案 我喜欢马克·米勒(Mark Miller)对“伟大的用户体验科学”的这些点网络电视视 ..
发布时间:2017-05-12 19:50:59 软件设计

工厂方法模式的真实世界示例

我刚读“工厂方法”。我明白,它提供了一种将实例化委托给子类的方法。但是我无法理解现实世界中的可能用途。 任何人都可以给出一个典型的例子,说明如何使用Factory方法模式,以便我可以关联 对于哪种工厂方法模式是最佳解决方案的问题陈述将足以使其清楚。 alt text http://www.dofactory.com/Patterns/Diagrams/factory.gif ..
发布时间:2017-05-12 19:50:46 软件设计

RESTful设计:何时使用子资源?

在设计资源层次结构时,应该何时使用子资源? 我曾经认为,当资源不能存在时,它应该被表示为其子资源。我最近遇到了这个反例: 员工在所有公司中都是唯一可识别的。 员工的访问控制和生命周期取决于公司。 我将其建模为: /公司/ {companyName} / employee / {employeeId} 注意,我不需要查找公司才能找到员工我应该怎么办?如果我这样做,我付出代价 ..
发布时间:2017-05-12 19:50:32 软件设计

什么是一些好的UX书?

我有兴趣创造更好的用户体验(UX)。有很多书在那里,有些对软件工程师有用的是什么? 解决方案 我的最爱: / p> 用户界面Joel Spolsky编程人员设计。一个很好的第一本程序员书。短语会粘在您的头脑中并影响您的设计,例如“人们无法控制鼠标”。 关于Face:交互设计的要点由Alan Cooper等人以桌面为中心。 不要让我想想作者:Steve Krug以Web为中心。简短 ..
发布时间:2017-05-12 19:50:20 软件设计

设计雅虎管道灵感界面

我真的很喜欢Yahoo Pipes的界面( http://pipes.yahoo.com/pipes/),并希望为不同的问题创建一个类似的界面。有没有任何图书馆可以让我创建一个具有相同基本外观的界面? 我特别喜欢管道的行为以及它们不仅仅是直线。 编辑:应用程序将基于网络。我可以使用Flash或Javascript。 解决方案 WireIt是一个开源的JavaScript库,用于 ..
发布时间:2017-05-12 19:49:57 软件设计

你使用什么样的UML图表?

UML2提供了不同种类的图表。 到目前为止,我只使用了类图。 你使用什么样的UML图表? 你推荐哪些图表用于设计和软件项目的文档? 解决方案 我更频繁地使用以下图表: 类图 : 解释阶级关系 序列图 : 捕获对象交互 活动图 : 解释活动(算法流程)。 编辑:根据@ Smith325的评论增加了链接。 ..
发布时间:2017-05-12 19:49:45 软件设计

我应该首先设计应用程序或型号(数据库)吗?

我正准备开始在业余时间开始建立一个新的网络项目,以实现一个在我头上弹起一段时间的想法。 我是否首先建立模型,然后是消费应用程序,或者其他方式更好。 最佳做法是什么?你会建立什么首先,为什么? 我想一般来说,应用程序通常应该推动模型,但是像许多网站这样的应用程序真的没有太多,没有模型。 由于某种原因,我觉得有时候可以更容易地考虑模型,因为应用程序只是对模型的操作。这是一个糟糕 ..
发布时间:2017-05-12 19:49:33 软件设计

如何保持我的理智,同时维护意大利面条代码

只是想听到一些建议(和安慰)的话,这将有助于我控制一些复杂的意大利面条代码 - 由多个程序员(通常彼此之间永远不会相遇)开发的代码。解决方案的功能只是互相补充。 通常我倾向于看到2种程序员: “害怕死亡程序员” - 那些家伙不会碰到他们没有的东西。他们可能会使用一个快速而肮脏的修复来完成维护任务,这将使下一个程序员开始寻找他们的家庭地址; - ) 它的作品 cons: ..
发布时间:2017-05-12 19:48:53 软件设计

设计Google日历等日历系统

我必须创建类似于Google日历的东西,所以我创建了一个包含用户所有事件的事件表。 事件表中的行有一个event_type字段,它告诉你什么样的事件,因为一个事件只能是一个单一的日期,或者每x天重新发生一次事件。 主要设计挑战是处理重新发生的事件。 当用户查看日历时,使用该月份的观点,如何显示给定月份的所有活动?这个查询会很棘手,所以我觉得创建另一个表格并为每一个事件创建一个行, ..
发布时间:2017-05-12 19:47:45 软件设计

多个应用实例 - 每个客户一个?

我正在考虑通过在线提供我的产品作为服务。目前,它是一个收缩包装的软件,用户可以下载到他们的服务器并在其服务器上运行,如 fogbugz 。 在我的新商业模式中,我将提供两种业务模式,一种是用户在其服务器上安装的传统收缩包装软件,并进行所有维护,升级的东西另一个是软件即服务(SaaS)类型,其中托管在我的服务器上完成,用户被给予一个单一的URL来登录。当然,每个客户帐户都将有一个唯一的URL, ..
发布时间:2017-05-12 19:46:21 软件设计

什么是最好的面向对象的设计实践?

我没有发现任何这样的问题。 请发表任何您认为是面向对象设计的有用规则。 解决方案 有很多很多OOD做法(Google it!)如果你不得不选择别人,我会用 SOLID 为首字母缩略词; 单一责任主体 开放/封闭原则 Liskov替代原则 界面隔离原则 依赖反转原则 ..
发布时间:2017-05-12 19:43:48 软件设计

你还在使用UML吗?怎么样?做什么的?

几年前,我们店里的每一个人都对UML感到疯狂。现在大家似乎已经冷却了。 如果在软件项目中仍然广泛使用UML,我很好奇。 如果是这样,这个用法限于白板?您是否将其用于文档?您是否使用工具来生成代码? 相关: UML实用? 解决方案 我更喜欢通过瀑布适应的UML(例如白板草图)的敏捷 UML(例如在Visio中绘制的精细图表的过多文档)。 UML仍然有助于向其他人 ..
发布时间:2017-05-12 19:43:11 软件设计

什么应该包括在最先进的错误和异常处理策略?

我明白这是一个非常广泛的问题,但一个简短的“依赖”的答案将不被接受。策略出生在处理广泛的问题。 应用程序设计师在设计错误和异常处理时应考虑什么问题策略? 根据软件类型(COTS,内部商业应用,咨询软件,游戏,托管网络应用,嵌入式等),策略将如何变化?软件类型是否重要? 伦理,政治和法律问题? 各种观点错误处理,开发商,业务支持,管理)。 我会探讨的一些想法: 各 ..
发布时间:2017-05-12 19:42:55 软件设计

你如何设计继承类?

我听说它说“设计继承”是“困难的”,但我从来没有发现是这样的。任何人(和任何人,我的意思是Jon Skeet)解释为什么这被称为困难,陷阱/障碍/问题是什么,为什么只是凡人程序员不应该尝试它,只是让他们的课密封来保护无辜者?好吧,我小时候谈到后者 - 但是我很好奇,看看有没有人(包括乔恩)真的有难度的设计继承。我真的从来没有考虑过这个问题,但也许我忽视了我认为是理所当然的事情 - 或者在没有意识到 ..
发布时间:2017-05-12 19:42:31 软件设计

设计原则

解决方案 面向对象类设计原理(“SOLID”原则) SRP:单一责任 原则课程应该有一个 和只有一个,理由更改。 OCP:开放封闭原则您 应该能够扩展一个类 行为而不修改它。 LSP:Liskov替换 原则派生类必须是 可替代基础 类。 ISP:界面隔离 原则使客户特定的细粒度 接口 DIP:依赖性 反转原则取决于 抽象,而不是实体。 $ b $来源: ..
发布时间:2017-05-12 19:41:47 软件设计

设计(二进制)文件格式时要注意什么?

当设计用于记录二进制数据的文件格式时,您认为格式应该具有什么属性?到目前为止,我已经提出了以下重点: 开始时有一些“魔术字节”,能够识别文件(在具体情况下,这也有助于区分文件和“遗留”文件) 在开头有一个文件版本号,以便文件格式可以更改后,不会破坏兼容性 指定所有数据项的字节和大小;或者:包含一些空格来描述数据的字节/大小(我会倾向于前者) 可能为将来可能需要的进一步的每个文件属性预留 ..
发布时间:2017-05-12 19:41:08 软件设计

Haskell中的依赖注入:惯用的方法

例如,假设你有一个界面 frobby ,您需要传递符合 frobby 的实例(可能有这些实例的多个品种,例如 foo ,和 bar )。 典型操作将是: 获取一些值 X 并返回一些值 Y 。例如,这可能是一个数据库访问器,采用SQL查询&连接器并返回数据集。您可能需要实现postgres,mysql和mock测试系统。 需要一些价值的功能 Z 并返回一个关于 Z 的关闭,专门针对 ..
发布时间:2017-05-12 19:40:56 软件设计