询问程序员: 精心设计/高品质的开源软件
我正在参加一个软件设计课程,我应该从软件设计的角度选择一个开源软件进行分析.
它必须是一个大项目:不少于100,000行代码.
我真的想选择一个设计精良且架构好的软件,以便对良好的软件设计有深入的了解.
通过良好的设计,我的意思是有意义的类和架构,良好的(设计)模式使用,良好的抽象使用,良好的组件组织,高内聚和组件之间的低耦合等等......
你有任何软件可以推荐我吗?
请注意,软件只需要有一个好的设计,设计不需要记录!:)
它不需要是最终用户的应用程序......它也可以是库,工具等......
当您计划使用像Haskell这样的函数式编程语言开发系统时,如何处理分析和设计阶段?
我的背景是命令式/面向对象的编程语言,因此,我习惯使用案例分析和使用UML来记录程序的设计.但事实是,UML本质上与面向对象的软件方式有关.
我很感兴趣的是,为将要使用函数式编程开发的系统开发文档和定义软件设计的最佳方法是什么.
haskell functional-programming analysis software-design purely-functional
我打算写一个简单的信用系统,用户可以在系统中" 添加 "," 扣除 "信用.目前我正在考虑两种方法.
简单一:将用户信用存储balance在数据库中,并记录所有操作("添加","扣除"),但不用于计算最新余额.
基于历史:不要将余额存储在数据库中.通过查看交易历史来计算余额,例如("添加","扣除")
我认为这两种情况都有效,但我想看看在设计这样一个系统时是否有任何警告,特别是我赞成History based系统.
或者,有没有我使用的参考实现或开源模块?
更新:或者是否有基于Ruby/Rail的模块,AuthLogic所以我可以插入和播放我现有的代码而无需重新发明轮子(例如交易,回滚,安全等)?
ruby database-design design-patterns ruby-on-rails software-design
在开发供公共使用的软件时,重要的是确保其设计时考虑到各种设置.
不同布局的键盘有多大差异?可以依赖所有角色存在吗?像反击一样:
`
Run Code Online (Sandbox Code Playgroud)
并且所有用户都可以轻松访问诸如反引号之类的键吗?
我无法找到提供相关信息的资源.
我正在考虑在一个项目中实施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)
此外,"获取所有帐户的列表","获取帐户的所有新交易列表","对交易执行某些特定计算","更新帐户余额"都是他们自己和每个的有效用例它们已经在自己的交互类中实现.
出现了一些问题:
我试图理解SOLID原则,特别是依赖性倒置原则.
在这是答案,它解释得非常好.
我想我已经理解我不能在课堂上创建任何类的实例.这样对吗?
但是如果我必须将一些内容保存到磁盘,我可以创建一个System.IO.File实例还是我必须注入它?
我不明白限制在哪里,如果我不能实例我自己的类,或者我不能实例.NET Framework类(或任何其他框架).
更新:
我认为这File是一个糟糕的例子,因为它被声明为静态.
顺便说一句,这个原则是否适用于静态类?
我想设计一个可跨平台(Android,iOS和Web)插件的软件,这意味着每个人都可以轻松地为其开发插件,并且用户可以从市场上选择插件并进行安装。每个插件都可以:
在后端,在软件设计中有许多最佳实践,例如OAuth。但是在前端,问题并不简单:
是否有任何跨平台的UI-kit用于react和react-native?例如,使用Expo v33 +或ReactNativeWeb,我们可以为android / ios和web构建代码,但是我找不到任何跨平台的UI-kit。(NativeBase,Elements或类似的跨平台UI- kit仅适用于Android和iOS)
在前端中,插件如何使用react和react-native(或理想情况下跨平台的UI套件)共享UI,以某种方式动态呈现在内核中(无需任何更新,例如,插件提供一个端点并返回一个react / native组件,核心将渲染它)
谁能解释一下这句话在这句话中的意思是什么?
Dart 是一种针对多个平台上的应用程序进行客户端优化的编程语言。
我不确定我是不是疯狂地违反了OOP.
假设有一个Car" 有 "a Engine和a的类Tank.
当Engine它运行时,它会从油中取出油Tank(比如说每单位循环一个单位,虽然油是不可数的)
如何Engine从油中获取油Tank?(当两者都是Car?的领域?)
实际上Engine应该持续"供应"石油而不是"获得"石油.
应该"OilCirculatingSystem"从哪里获得石油Tank
和供应Engine.
如何在课程中对此系统进行建模?
有合适的设计模式吗?
***编辑:简单地说,如何有一个从"油流" Tank来Engine?(是不是Oil有责任从流量Tank到Engine一个阀门打开时?
在开发过程中,除了偶尔的标题之外,我与之交互的大部分CSS都没有注释.结果,我养成了不评论CSS的习惯.
但是,我经常发现在我正在使用的CSS中添加注释会很有用.除了指示作者的标题之外,你应该评论CSS吗?如果是这样,怎么样?
我不是在询问如何评论的过程,而是最佳实践.
software-design ×10
architecture ×3
oop ×2
analysis ×1
c# ×1
car-analogy ×1
css ×1
dart ×1
expo ×1
haskell ×1
html ×1
keyboard ×1
open-source ×1
react-native ×1
reactjs ×1
ruby ×1
web ×1