阅读以下内容后,我想我明白将最简单的脚本包装在 main() 函数中的价值。
我应该在 main() 内部还是外部定义所有函数?
有正确或错误的方法吗?两种方法的优缺点是什么?
该express-generator工具创建一个名为 的文件bin/www并将其用作应用程序的主要入口点。我相信我已经看到其他几个模块也这样做了,但绝大多数只是使用index.js.
这背后的理由是什么?当然,我理解为什么您要将服务器和用于设置程序的代码拆分为单独的模块,但为什么bin/www而不呢index.js?为什么将主入口点嵌套到比它调用的内容更深两层的程序中?并删除文件扩展名,使其更加缺乏描述性?
这背后是否有一个聪明的、不明显的原因?我也应该将其用于我的节点模块吗?
谢谢你!
[编辑]:
所有好的答案,谢谢大家!我已经接受了这一观点,指出这是包含可执行文件的包的标准行为。这是我在这方面遇到的更多阅读:
假设我有一个字符串列表/元组,
COLOURS = [
"White",
"Black",
"Red"
"Green",
"Blue"
]
for c in COLOURS:
# rest of the code
Run Code Online (Sandbox Code Playgroud)
有时我忘记在列表中的每个条目后面放置逗号("Red"在上面的代码片段中)。这会产生一个"RedGreen"而不是两个单独的"Red"列表"Green"项。
由于这是有效的 Python,因此没有 IDE/文本编辑器显示警告/错误。错误的值仅在测试过程中才会引起注意。
我应该使用什么写作风格或代码结构来防止这种情况?
我正在开发一个Python App Engine应用程序,我想将源代码文件的内容拆分Models.py为每个模型的单独文件,但我想将它全部放在名为Models的文件夹中.问题是,当我这样做时,我的应用程序无法再找到这些类.我该怎么办?
这个问题不是关于MVC,而是另一个具有相同标题的问题.
python google-app-engine code-formatting project-structure code-structure
我想得到一些关于构建我的javascript代码和jquery函数的建议.我喜欢使用JQuery进行dom事件处理和ajax等.我已经编写了过去看起来很糟糕的代码,我的整个js文件由一堆匿名的Jquery函数组成.
我想知道 - 与JQuery结合时"结构良好"的javascript文件是什么样的?是否会有许多标准的javascript函数,然后$()在需要时放入一些JQuery 函数?以纯粹的程序方式处理代码是否可以,或者最好使用一些OOP概念?我总是只有一堆函数,这些函数在这里和那里分层调用辅助函数并没有对象(除了使用一些随机第三方库时使用的那些).
我不是一个javascript程序员(主要是Java)所以来自经验丰富的js开发人员的任何建议都会很棒.
我想知道什么时候需要使用module_load_include()或require_once包含位于模块中的文件.
上下文
单页/ ajax网络应用程序
基本代码结构
LocationManager(负责更新浏览器哈希并将应用程序位置切换到其他区块)
页面/平铺流程
基本信息>家庭信息>车辆信息>购买选项>查看订单>输入付款和提交
问题
当用户从"购买选项"导航到"审阅订单"时,将进行长时间(5-8秒)的服务调用以计算订单详细信息.在呼叫解决后,回调旨在将用户导航到"查看订单"页面.问题是,如果用户在此期间点击回来并返回到家庭信息,一旦通话结算,他们将"自动"带到审核订单.非常尴尬的用户体验.
限制
取消呼叫不是一种选择.需要一个解决方案来处理导航.
目前拟议的实施
在进行calculateOrder调用之前保存"currentLocation".将回调中的"currentLocation"传递给setLocation方法作为setStartingPoint.里面的setLocation方法if(intendedStartingPoint === Locationmanager.currentLocation) {//Navigate}
总而言之,如果用户在呼叫进行过程中更改位置,则在呼叫解决时,我们将无法导航,因为用户不希望在此时导航到"查看订单".
这有效,对吗?
捕获
我们在app中有很多地方可以在长时间运行的调用的回调中调用setLocation.这意味着我将不得不使用新参数--wartingStartingPoint更新所有setLocation调用.虽然这对我来说很有意义,但它看起来似乎有可能变得有点混乱.
关于如何清理和集中它的任何想法?
有时我喜欢使用早期的 return 语句来防止嵌套 if 语句,我发现这会导致代码可读性较差。
我想知道是否存在任何客观或压倒性的普遍共识,以下两种模式是更好的做法?我不认为这是一个主观问题,因为我真正要问的是近乎客观的偏好。
void func() {
if (a) {
do b
}
else {
do c
}
}
Run Code Online (Sandbox Code Playgroud)
或者
void func() {
if (a) {
do b
return;
}
do c
}
Run Code Online (Sandbox Code Playgroud) 相关问题:使用短路评估的好处,为什么语言不能使用短路评估?,有人可以解释这行代码吗?(逻辑和分配运营商)
关于使用短路代码的语言的好处有疑问,但我想知道程序员有什么好处?只是它可以使代码更简洁一点吗?还是有性能原因?
我不是在询问有关两个实体需要进行评估的情况,例如:
if($user->auth() AND $model->valid()){
$model->save();
}
Run Code Online (Sandbox Code Playgroud)
对我而言,原因很清楚 - 既然两者都必须成立,那么如果用户无法保存数据,您可以跳过更昂贵的模型验证.
这对我来说也有明显的目的:
if(is_string($userid) AND strlen($userid) > 10){
//do something
};
Run Code Online (Sandbox Code Playgroud)
因为strlen()使用非字符串值调用是不明智的.
我想知道的是当它不影响任何其他语句时使用短路代码.例如,从Zend Application默认索引页面:
defined('APPLICATION_PATH')
|| define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
Run Code Online (Sandbox Code Playgroud)
这可能是:
if(!defined('APPLICATION_PATH')){
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
}
Run Code Online (Sandbox Code Playgroud)
或者甚至作为一个声明:
if(!defined('APPLICATION_PATH'))
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
Run Code Online (Sandbox Code Playgroud)
那么为什么要使用短路代码呢?仅仅因为使用逻辑运算符代替控制结构的"酷"因素?要合并嵌套的if语句?因为它更快?
我有一个本地 swift 包Foo,它提供了两个不同的库Foo和FooB。现在我想在另一个本地包Bar 中使用它们。我只能通过路径声明来获取整个包。有没有办法命名/指定应使用哪个库?我想在我的Bar包中使用FooB。
let package = Package(
name: "Foo",
products: [
.library(name: "Foo", targets: ["Foo"]),
.library(name: "FooB", targets: ["FooB"])
]
...)
Run Code Online (Sandbox Code Playgroud)
let package = Package(
name: "Bar",
dependencies: [
.package(path: "Foo"),
.package(path: "FooB") // this one does not work
],
...)
Run Code Online (Sandbox Code Playgroud)
// inside package Bar
import Foo
import FooB // this is throwing "no such module 'FooB'"
Run Code Online (Sandbox Code Playgroud) code-structure ×10
javascript ×3
python ×3
asynchronous ×1
coding-style ×1
drupal ×1
express ×1
if-statement ×1
jquery ×1
navigation ×1
node.js ×1
php ×1
return ×1
swift ×1
swiftpm ×1