软件设计

为什么Haskell的“头”崩溃在一个空的列表(或为什么*不*它返回一个空列表)? (语言哲学)

注意其他潜在的贡献者:请不要犹豫,使用抽象或数学符号来表达你的观点。如果我发现你的答案不清楚,我会要求澄清,但是以其他方式自由表达自己。 要清楚:我不是寻找“安全”头,也不能选择 head 特别有意义。问题的问题是关于 head 和 head'的讨论,用于提供上下文。 我已经和Haskell一起劫持了几个月了(至此已经成为我的主要语言),但是我承认不了解更多先进的概念和语言哲学的细节( ..
发布时间:2017-05-12 19:39:51 软件设计

你如何设计功能性程序?

从我的编程生涯的第一天开始,我开始面向对象编程。然而,我有兴趣学习其他范例(这里我曾经在这里说过的一些事情是一件好事,但我没有时间去做)。我想我不但准备好了,但有时间,所以我将用F#启动功能编程。 然而,我不知道如何结构更少的设计应用程序。我习惯于OO编程中的一类文件和类名词/功能动词的想法。您如何设计和构建功能应​​用程序? 解决方案 阅读 SICP 。 另外,还有一个 PD ..
发布时间:2017-05-12 19:39:08 软件设计

图标:没有设计技巧的开发人员如何使他/她的应用程序图标漂亮?

我可能花费太多时间尝试使我的视觉界面看起来不错,而且我很擅长找到可用性和风格之间的正确匹配,我无望的是制作漂亮的图标。 你如何克服这个问题(我确定常见的)问题?我正在考虑按钮上的图像,也许最重要的是实际的应用程序图标。 您是否依靠第三方设计师进出房屋?或者你知道一些隐藏的网站,提供了很多图标供我们使用?我试过谷歌,但我似乎找到了非常具体的昂贵的包,数以百万计的星际迷航图标或图标看起来很 ..
发布时间:2017-05-12 19:38:10 软件设计

创建具有良好用户交互经验的应用程序的资源?

我在这里区分用户交互体验和纯用户界面(UI)设计,尽管通常有一个对应关系。您可以通过“无聊”的灰色界面进行良好的用户交互(请注意,无聊的界面不是必需的!)。 我的书架包含以下内容: / p> 囚犯正在运行庇护 Don'让我想想 Rocket Surgery Made简单:自己找到和修复可用性问题的指南 日常事物的设计 关于Face 3.0 通用设计原则 设计界面 简单法则 ..

面向对象的象棋游戏设计

我正在尝试以面向对象的方式感受如何设计和思考,并希望从社区获得有关此主题的一些反馈。以下是我想以OO方式设计的象棋游戏的例子。这是一个非常广泛的设计,我在这个阶段的重点只是确定谁负责什么消息,以及对象如何相互交互来模拟游戏。请指出,如果有不良设计(高耦合,不良内聚等)的元素以及如何改进它们。 国际象棋游戏有以下课程 Board 玩家 Piece Square ChessGame ..
发布时间:2017-05-12 19:37:17 软件设计

开发人员知道什么有用的按位操作员代码技巧?

我必须说我从来没有使用按位运算符的原因,但我相信有一些我已经执行的操作可以更有效地完成它们。 解决方案 看到着名的位Twizling Hacks 大多数乘法/除法是不必要的 - 编译器会自动执行,你只会混淆人们。 但是有一些“check / set / toggle N”类型的hacks非常有用,如果您可以使用硬件或通讯协议。 ..
发布时间:2017-05-12 19:37:01 软件设计

分离逻辑和UI

我明白我应该把业务逻辑和UI分开,但是我不知道我现在在做什么违反了这个规则。 设计我的财务计划的表格结构。我有一些困难可视化一些部分,所以我嘲笑一些屏幕,以帮助我整理所有将需要的东西,以及如何组合在一起。我真的认为这是有帮助的,我相信我的模式是坚实的,但是我开始想知道是否也许我已经愚弄自己,认为使用模拟屏幕来帮助是真的伤害了我。 我使用模拟屏幕自动出错? 或者有人可以解释潜在的陷 ..
发布时间:2017-05-12 19:35:35 软件设计

如何在servlet环境中初始化API

显然我想写出去耦组件。一部分是一个表单引擎。我不希望它依赖于servlet API,但是我必须根据请求(或至少每个会话)进行初始化。 在应用程序中我会使用类似 的公共静态void setLocale(Locale l); 那么我的个别类可以用静态getter获取它。这在servlet环境中是不可行的(servlets甚至缺少一个 static getServletCo ..
发布时间:2017-05-12 19:34:56 软件设计

如何知道用户何时读取重要的电子邮件通知?

我们公司经常通过电子邮件发出重要通知,许多其他公司确实如此。我们的管理团队已经转向我们,看看是否有任何方式知道用户何时读取这些重要信息。我意识到通过电子邮件强制读取收据是不可靠的,所以我们正在尝试探索我们可以使用的其他选项。 有一个建议是添加一个验证电子邮件底部的链接,该链接将通过电子邮件地址,并接受将进行一些魔术记录的页面。 另一个建议是从电子邮件中删除重要的主题,并将其放入网页(可 ..
发布时间:2017-05-12 19:34:31 软件设计

需要建议设计“防破解”软件

我目前正在开发一个项目,我需要创建一些架构,框架或任何标准,我可以“至少”增加软件的破解方法,即增加软件安全性。已经有不同的方法来激活包括在线激活,密钥等的软件。我目前正在研究少数研究论文。但是还有很多东西我想要讨论。 有人可以指导我去一些体面的论坛,邮件列表或类似的东西吗?或者任何其他帮助将不胜感激。 解决方案 我会告诉你最接近“crackproof”的事情:一个Web应用程序。 ..
发布时间:2017-05-12 19:34:18 软件设计

目的最终和密封

解决方案 根据维基百科,”密封类主要用于防止派生,在编译期间增加了另一个严格级别,提高内存使用率,并触发某些可以提高运行时效率的优化。“ 另外,从: blockquote> 版本控制:当一个类最初被封装时,它可以在将来变为未密封,而不会破坏兼容性。 (...) 性能:(...)如果JIT编译器使用密封类型查看对虚拟方法的调用,则JIT编译器可以生成更有效的代码(...) ..
发布时间:2017-05-12 19:30:49 软件设计

如何在matlab gui中实现mvc设计的想法

请在一个项目上开发一个可视化工具,以便在matlab中使用mvc设计来分析数据。但是我遇到的问题是,新的编程和matlab是第一个真正的程序设计。 ive几乎完成了代码,但我害怕他们没有办法在mvc设计模式,所以我需要改变这一点。 真的很欣赏尽可能多的引用,以链接我有用的材料,因为我无法在matlab中找到任何mvc,或者可能是在matlab中实现mvc的示例代码帮助我了解我如何可以做我的, ..
发布时间:2017-05-12 19:29:51 软件设计

WCF对象设计 - OOP vs SOA

在WCF / SOAP世界中处理多态业务对象的正确方法是什么? 在我看来,SOA和OOP在彼此之间是不一致的 - 暴露一个干净的WSDL你需要具体的对象,通常甚至不利用继承。另一方面,大概在底层系统中,您将需要遵循正确的OO设计。 人们通常在这里做什么?构建一组WCF契约对象,代替OOP原则,然后转换为实际逻辑层中的另一组对象? 解决方案 blockquote> 人们通常在 ..
发布时间:2017-05-12 19:25:40 软件设计

开源库设计有向图

我将需要编写一个程序,其中列出了一些人员,并以有针对性的方式将它们连接在一起。整个项目的GUI方面非常重要。该图必须允许很多互动。例如选择几个人并隐藏其他人,移动他们。 此外,该软件将需要能够提供其他类型的GUI功能,如几个选项卡,文本框等。 应用程序必须非常有效。因此,我想知道哪些开放源码库(在这一点上他们的编程语言是这样的),因此,它必须能够处理数百个甚至数千个小部件。 被写 ..
发布时间:2017-05-12 19:23:50 软件设计

使用工厂而不是构造函数创建对象的阈值是多少?

您始终使用工厂。您使用工厂而不是构造函数创建对象的阈值是多少? 只有在您检查null时,您才能使用工厂。 您始终使用构造函数 您很少使用工厂...这些情况是什么? 利弊 更新:我在项目中从域驱动设计应用工厂模式。创建工厂背后的原因之一是减少域模型中的噪音。 谢谢 解决方案 如果我有一个抽象基类(或接口)和几个具体的派生类,并且有一些逻辑根据哪一个具体类被创建。我在工 ..
发布时间:2017-05-12 19:21:15 软件设计

如何选择项目的编程语言?

任何人都可以说出为某个项目选择特定程式语言而不是别的程序语言的原因。我的意思是这个想法在一个项目的设计阶段是否穿越了心灵,或者所有这些东西只是理论上的,实际上人们使用他们熟悉的任何语言? 解决方案 需要注意的一些问题: 语言的生产力(包括工具 - IDE,调试器,等等) 具有这种特定语言技能的人员可以使用 “流行”语言 您的组织中具有语言能力的人员 学习语言难度 语言/平台 ..
发布时间:2017-05-12 19:14:04 软件设计

免费在Haskell

我有这个代码,我想要免费; (\kt - > chr $ a + flip mod 26(ord k + ord t -2 * a)) 我该怎么做? 除了“想想这个amd想出来的东西”之外,还有一些免费样式的一般规则? 解决方案 要转一个函数 func xyz =(x,y和z中的某些表达式) 成无点形式,我一般都会按照最后一个参数 z 并将函数写入 ..
发布时间:2017-05-12 19:11:32 软件设计

无用的界面

解决方案 如果我知道为什么你会使用界面,你将只有一个实现?一个事实,只会有一个实现,我不会创建一个接口。这属于YAGNI,IMO。 (当然,很少有人知道有关未来的事实...) ..
发布时间:2017-05-12 19:10:52 软件设计

什么是“过度工程”适用于软件?

我不知道如何将“过度工程”一词应用于软件开发是一个好的定义。这个表达似乎在软件设计讨论中经常使用很多,与“过度的未来打样”结合使用,并且很好地确定一个更精确的定义。 解决方案 与大多数答案相反,我不认为“目前不需要的功能”是过度工程的;或者是最不成问题的形式。 像你说的那样,最糟糕的过度工程通常以未来打样和可扩展性的名义承诺 - 并实现了完全相反: 空白层次的抽象最多是不必要的 ..
发布时间:2017-05-12 19:10:00 软件设计