标签: software-design

精心设计/高品质的开源软件

询问程序员: 精心设计/高品质的开源软件

我正在参加一个软件设计课程,我应该从软件设计的角度选择一个开源软件进行分析.

它必须是一个大项目:不少于100,000行代码.

我真的想选择一个设计精良且架构好的软件,以便对良好的软件设计有深入的了解.

通过良好的设计,我的意思是有意义的类和架构,良好的(设计)模式使用,良好的抽象使用,良好的组件组织,高内聚和组件之间的低耦合等等......

你有任何软件可以推荐我吗?

请注意,软件只需要有一个好的设计,设计不需要记录!:)

它不需要是最终用户的应用程序......它也可以是库,工具等......

architecture open-source design-patterns software-design

8
推荐指数
1
解决办法
741
查看次数

功能规划的分析与设计

当您计划使用像Haskell这样的函数式编程语言开发系统时,如何处理分析和设计阶段?

我的背景是命令式/面向对象的编程语言,因此,我习惯使用案例分析和使用UML来记录程序的设计.但事实是,UML本质上与面向对象的软件方式有关.

我很感兴趣的是,为将要使用函数式编程开发的系统开发文档和定义软件设计的最佳方法是什么.

  • 您是否仍会使用用例分析结构化分析和设计
  • 软件架构师如何定义系统的高级设计,以便开发人员遵循它?
  • 当您应该展示解决方案的设计时,您向客户或新开发人员展示了什么?
  • 如何在不首先编写所有内容的情况下记录整个图片?
  • 在功能世界中有没有可与UML相媲美的东西?

haskell functional-programming analysis software-design purely-functional

8
推荐指数
1
解决办法
1605
查看次数

信用体系:基于历史还是基于平衡?

我打算写一个简单的信用系统,用户可以在系统中" 添加 "," 扣除 "信用.目前我正在考虑两种方法.

  1. 简单一:将用户信用存储balance在数据库中,并记录所有操作("添加","扣除"),但不用于计算最新余额.

  2. 基于历史:不要将余额存储在数据库中.通过查看交易历史来计算余额,例如("添加","扣除")

我认为这两种情况都有效,但我想看看在设计这样一个系统时是否有任何警告,特别是我赞成History based系统.

或者,有没有我使用的参考实现或开源模块?

更新:或者是否有基于Ruby/Rail的模块,AuthLogic所以我可以插入和播放我现有的代码而无需重新发明轮子(例如交易,回滚,安全等)?

ruby database-design design-patterns ruby-on-rails software-design

8
推荐指数
2
解决办法
1665
查看次数

哪些键盘按键在国际上可以轻松访问?

在开发供公共使用的软件时,重要的是确保其设计时考虑到各种设置.

不同布局的键盘有多大差异?可以依赖所有角色存在吗?像反击一样:

`
Run Code Online (Sandbox Code Playgroud)

并且所有用户都可以轻松访问诸如反引号之类的键吗?

我无法找到提供相关信息的资源.

keyboard keyboard-shortcuts software-design

8
推荐指数
1
解决办法
242
查看次数

清洁建筑 - 罗伯特马丁 - 用例粒度

我正在考虑在一个项目中实施Robert Martin的Clean Architecture,我正在努力找出如何处理非平凡的用例.

我发现很难将体系结构扩展到复杂/组合的用例,特别是使用者是系统而不是用户的情况,就像系统执行某种批处理一样.

为了便于说明,我们假设像伪代码一样实现的"系统更新所有帐户余额"这样的用例

class UpdateAllAccountBalancesInteraction {
    function Execute() {
        Get a list of all accounts
        For each account
            Get a list of all new transactions for account
            For each transaction
                Perform some specific calculation on the transaction
            Update account balance
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,"获取所有帐户的列表","获取帐户的所有新交易列表","对交易执行某些特定计算","更新帐户余额"都是他们自己和每个的有效用例它们已经在自己的交互类中实现.

出现了一些问题:

  • 用例是"系统更新所有帐户余额",甚至是一个有效的用例,还是应该分解为更小的用例(尽管从商业角度看它似乎有意义,这是一个合法的业务场景)?
  • UpdateAllAccountBalancesInteraction是合法的交互吗?
  • 交互允许/应该协调其他交互吗?
  • 编排其他交互的代码是否真的属于其他地方?
  • 是否可以将UpdateAllAccountBalancesInteraction作为交互,但让它调用其他交互者共享的函数而不是其他交互者的协调者?

architecture oop software-design

8
推荐指数
1
解决办法
778
查看次数

.NET Framework类的依赖性反转原则

我试图理解SOLID原则,特别是依赖性倒置原则.

在这是答案,它解释得非常好.

我想我已经理解我不能在课堂上创建任何类的实例.这样对吗?

但是如果我必须将一些内容保存到磁盘,我可以创建一个System.IO.File实例还是我必须注入它?

我不明白限制在哪里,如果我不能实例我自己的类,或者我不能实例.NET Framework类(或任何其他框架).

更新:
我认为这File是一个糟糕的例子,因为它被声明为静态.

顺便说一句,这个原则是否适用于静态类

c# software-design solid-principles

8
推荐指数
1
解决办法
441
查看次数

可插拔的跨平台软件设计,用于本机反应和本机反应

我想设计一个可跨平台(Android,iOS和Web)插件的软件,这意味着每个人都可以轻松地为其开发插件,并且用户可以从市场上选择插件并进行安装。每个插件都可以:

  • 与核心应用程序在后端共享数据
  • 在Apps和Web中拥有一个自定义UI,理想情况下,它使用标准UI-kit来保持一致性(例如Shopify polaris

在后端,在软件设计中有许多最佳实践,例如OAuth。但是在前端,问题并不简单:

  1. 是否有任何跨平台的UI-kit用于react和react-native?例如,使用Expo v33 +或ReactNativeWeb,我们可以为android / ios和web构建代码,但是我找不到任何跨平台的UI-kit。(NativeBaseElements或类似的跨平台UI- kit仅适用于Android和iOS)

  2. 在前端中,插件如何使用react和react-native(或理想情况下跨平台的UI套件)共享UI,以某种方式动态呈现在内核中(无需任何更新,例如,插件提供一个端点并返回一个react / native组件,核心将渲染它)

软件架构

architecture software-design reactjs react-native expo

8
推荐指数
1
解决办法
204
查看次数

客户优化是什么意思?

谁能解释一下这句话在这句话中的意思是什么?

Dart 是一种针对多个平台上的应用程序进行客户端优化的编程语言。

software-design dart

8
推荐指数
1
解决办法
1997
查看次数

OOP设计:汽车 - 油箱和发动机之间的连接

我不确定我是不是疯狂地违反了OOP.

假设有一个Car" "a Engine和a的类Tank.

Engine它运行时,它会从油中取出油Tank(比如说每单位循环一个单位,虽然油是不可数的)

如何Engine从油中获取油Tank?(当两者都是Car?的领域?)

实际上Engine应该持续"供应"石油而不是"获得"石油.
应该"OilCirculatingSystem"从哪里获得石油Tank
和供应Engine.
如何在课程中对此系统进行建模?
有合适的设计模式吗? 在此输入图像描述

***编辑:简单地说,如何有一个从"油流" TankEngine?(是不是Oil有责任从流量TankEngine一个阀门打开时?

oop design-patterns software-design car-analogy

7
推荐指数
1
解决办法
1369
查看次数

你应该如何评论CSS?

在开发过程中,除了偶尔的标题之外,我与之交互的大部分CSS都没有注释.结果,我养成了不评论CSS的习惯.

但是,我经常发现在我正在使用的CSS中添加注释会很有用.除了指示作者的标题之外,你应该评论CSS吗?如果是这样,怎么样?

我不是在询问如何评论的过程,而是最佳实践.

html css software-design web

7
推荐指数
1
解决办法
3762
查看次数