相关疑难解决方法(0)

功能编程是否取代了GoF设计模式?

自从我去年开始学习F#和OCaml以来,我已经阅读了大量的文章,这些文章坚持认为设计模式(特别是Java)是命令式语言中缺少的功能的变通方法.我发现的一篇文章提出了相当强烈的主张:

我遇到过的大多数人都读过Gang of Four的"设计模式"一书.任何自尊的程序员都会告诉你,这本书与语言无关,而且无论你使用哪种语言,这些模式都适用于软件工程.这是一个崇高的主张.不幸的是,它与事实相去甚远.

功能语言极具表现力.在函数式语言中,人们不需要设计模式,因为语言可能是如此高级,您最终会编写概念,一起消除设计模式.

函数式编程的主要特性包括作为一等值,currying,不可变值等的函数.对我来说,OO设计模式近似于任何这些特性似乎并不明显.

另外,在支持OOP的函数式语言(例如F#和OCaml)中,对我来说很明显,使用这些语言的程序员将使用与其他OOP语言相同的设计模式.事实上,现在我每天都使用F#和OCaml,我在这些语言中使用的模式与我在Java中编写时使用的模式之间没有明显的差异.

功能编程是否消除了对OOP设计模式的需求,是否有任何理由?如果是这样,您是否可以发布或链接到典型OOP设计模式及其功能等效的示例?

oop design-patterns functional-programming

1028
推荐指数
16
解决办法
10万
查看次数

ExpressJS如何构建应用程序?

我正在使用NodeJS的ExpressJS Web框架.

使用ExpressJS的人将他们的环境(开发,生产,测试......),他们的路线等放在了app.js.我认为这不是一个很好的方式,因为当你有一个很大的应用程序时,app.js太大了!

我想有这个目录结构:

| my-application
| -- app.js
| -- config/
     | -- environment.js
     | -- routes.js
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

app.js

var express = require('express');
var app = module.exports = express.createServer();

require('./config/environment.js')(app, express);
require('./config/routes.js')(app);

app.listen(3000);
Run Code Online (Sandbox Code Playgroud)

配置/ environment.js

module.exports = function(app, express){
    app.configure(function() {
    app.use(express.logger());
    });

    app.configure('development', function() {
    app.use(express.errorHandler({
        dumpExceptions: true,
        showStack: true
    }));
    });

    app.configure('production', function() {
    app.use(express.errorHandler());
    });
};
Run Code Online (Sandbox Code Playgroud)

配置/ routes.js

module.exports = function(app) {
    app.get('/', function(req, res) {
    res.send('Hello world !');
    });
};
Run Code Online (Sandbox Code Playgroud)

我的代码运行良好,我认为目录的结构很漂亮.但是,代码必须进行调整,我不确定它是好还是漂亮.

使用我的目录结构并调整代码或只使用一个文件(app.js)更好吗?

谢谢你的建议!

node.js express

513
推荐指数
14
解决办法
16万
查看次数

如何构建express.js应用程序?

是否存在app.jsExpress.js应用程序中分解和模块化文件的通用约定?或者将所有内容保存在一个文件中是否常见?

javascript modularity node.js express

102
推荐指数
2
解决办法
5万
查看次数