我正在寻找Java,C#,C++,Ruby或Python等语言的小项目(5,000 - 25,000行).这些项目应该表现出优秀的架构和设计原则.这样做的目的是找到好的模型来学习,而不是在我学习这些课程之前,在接下来的10年里被打倒.
编辑:感谢所有回复.我会尝试通过所有这些,看看哪个是最容易理解的.这需要我一段时间.不过不用担心.我会接受一个.
我本来打算把它作为一个更长的问题,但我觉得我做得越短越好,你就会越明白我的意思.
MVC架构模式有3个依赖项.视图取决于模型.Controller取决于视图和模型.该模型是独立的.
图层架构模式定义了N-1个依赖关系,其中N是层数.
给定三个层:模型,视图和控制器,只有2个依赖项,而传统的MVC只有3个.结构如下所示:
View ---> Controller ---> Model
Run Code Online (Sandbox Code Playgroud)
[视图取决于控制器,控制器取决于型号]
在我看来,这种风格实现了相同的目标,并产生更松散的耦合.为什么这种风格不常见?它真的实现了同样的目标吗?
编辑:不是ASP.NET MVC,只是模式.
关于格里格斯的帖子:
在Bash中,如何将具有多个条件的正则表达式与文件名匹配?例如,我想匹配.txt或.log结尾的所有文件.
我知道如何匹配一种标准:
for file in *.log
do
echo "${file}"
done
Run Code Online (Sandbox Code Playgroud)
逻辑的语法是什么,或者匹配两种或更多类型的标准?
正如Rich Hickey所说,Lisp语言的秘诀在于能够通过宏直接操作抽象语法树.这可以用任何非Lisp方言语言实现吗?
lisp language-features functional-programming abstract-syntax-tree
在推送到Heroku之前,是否可以在Rails应用程序中自动预编译我的资产?我总是忘记这样做,所以当我输入时git push heroku master,它会首先运行rake assets:precompile ; git commit add . ; git commit -a -m "Precompile.",或者那种效果会很好.
有没有人实现这样的解决方案?可能没有钩子?虽然我怀疑这是唯一的方法.
这里有一些Scala代码可以将1到9之间的值相加,可以被3或5整除.为什么第5行返回Unit而不是布尔类型?
object Sample {
def main(args : Array[String]) {
val answer = (1 until 10).foldLeft(0) ((result, current) => {
if ((current % 3 == 0) || (current % 5 == 0)) {
result + current
}
})
println(answer)
}
}
Run Code Online (Sandbox Code Playgroud) 我知道在Regex中,你可以拒绝符号列表,例如[^abc].在我输入的中间看到一个完整的单词时,我想拒绝.
更确切地说,我想拒绝"打印<除了"所有">"以外的任何东西.几个例子:
print all - match
frokenfooster - no match
print all nomnom - no match
print bollocks - no match
print allpies - no match
Run Code Online (Sandbox Code Playgroud) 对于不需要任何传递信息(对象实例或类)的方法,更好的方法是什么,因为例如它们只是进行简单的转换.@staticmethod还是方法?
class Foo(object):
def __init__(self, trees):
self.money = Foo.trees2money(trees)
@staticmethod
def trees2money(trees):
return trees * 1.337
class Quu(object):
def __init__(self, trees):
self.money = self.trees2money(trees)
def trees2money(self, trees):
return trees * 1.337
Run Code Online (Sandbox Code Playgroud)