问题标签 [conventions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1034 浏览

objective-c - 我应该在实现中使用 self 关键字(属性)吗?

我相信我在很大程度上了解属性。我的问题是,如果我有一个实例变量的属性,并且我正在我的实现文件的方法中设置或检索它,我应该使用self.myProperty还是只使用myProperty?我知道任何一个都有效,但我看到了混合约定,有时代码直接访问变量,有时通过属性访问。

这样做有技术原因吗?这只是惯例/个人喜好吗?而且我不是指方法的参数名称与实例变量名称冲突的实例,这可能是使用该属性的一个原因(至少,在其他语言中,我不知道这个)。我假设当一个人在实现中使用该属性时,他们希望利用他们声明该属性的方式(即非原子,保留),因此例如在一种方法中,可以这样做:

代替:

这是原因吗?那么只有在某些情况下使用该物业会更好吗?

我是 Objective-C 的新手,这是少数让我感到困惑的事情之一。到目前为止,我只是在最可能的错误假设下直接访问了实例变量,即通过属性实际上调用/发送了方法/消息并增加了不必要的开销。我很确定我错了,但是即使开销的差异可以忽略不计(如果有的话),当人们可以简单地直接访问变量时,为什么还要选择添加它呢?

我很确定我的想法是错误的,这就是我在这里问的原因。

0 投票
7 回答
231 浏览

actionscript - Recommended initialization values for numbers

Assume you have a variety of number or int based variables that you want to be initialized to some default value. But using 0 could be problematic because 0 is meaningful and could have side affects.

Are there any conventions around this?

I have been working in Actionscript lately and have a variety of value objects with optional parameters so for most variables I set null but for numbers or ints I can't use null. An example:

The difficulty is that using 0 in the above code might be problematic if the value is not ever changed from its initial value. It is easy to detect if a variable has a null value. But detecting 0 may not be so easy because 0 might be a legitimate value. I want to set a default value to make the parameter optional but I also want to later detect in my code if the value was changed from its default without hard to debug side affects.

I suppose I could use something like -1 for a value. I was wondering if there are any well known coding conventions for this kind of thing? I suppose it depends on the nature of the variable and the data.

This is first my stack overflow question. Hopefully the gist of my question makes sense.

0 投票
1 回答
1322 浏览

mysql - MySQL ENUMS 是打算与 CakePHP 一起使用还是应该避免使用它们?

问题是,我没有看到这些 ENUM 在 CakePHP 脚手架中产生下拉菜单,所以我认为 CakePHP 可能会反对它,但我找不到任何关于此事的文档。

有人知道是否使用 ENUMs 吗?

0 投票
13 回答
95622 浏览

python - Python:使用 4 个空格进行缩进。为什么?

在编写 python 代码时,我只使用 2 个空格来缩进,当然PEP-8确实建议使用 4 个空格,但从历史上看,这对我来说并不常见。

那么,谁能说服我使用 4 个空格而不是 2 个空格?有什么好处和坏处?

PS 最后,将所有现有代码库从 2 个空格转换为 4 个空格的简单方法是什么?


PPS PEP-8 也严格建议不要使用制表符进行缩进。在这里阅读


所以,总结一下:

优点:

  • 当包裹超过 80 行的字符串时,有更多的空间来排列。
  • 可以从片段中复制代码,并且可以正常工作。

缺点:

  • 使用更深层次的嵌套语句,实际代码的空间更少。

谢谢。

0 投票
9 回答
440 浏览

c# - 在 C# 中为成员变量分配默认值的常规方法是什么?

C# 中哪个更传统?

或者

0 投票
7 回答
1133 浏览

python - python约定的新手,我的代码在正确的轨道上吗?

我已经阅读了一周的 Python 知识,只是想通过创建一个税级计算器来尝试一下。我还没有完成,但我想知道我是否走在正确的轨道上,或者就 python 编程而言。我之前只做过一点 C++ 编程,感觉就像它显示(好/坏?)

0 投票
3 回答
135 浏览

c# - 将大量代码放在包装 PInvoke 内容的属性的 get 函数中是不好的做法吗?

我知道的一个令人困惑的标题。让我解释。

我必须编组一个结构数组,然后将其转换为一个类数组(遗留兼容性)。例如

0 投票
7 回答
48506 浏览

module - 你如何使用 Fortran 90 模块数据

假设您有一个包含大量变量、函数和子例程的 Fortran 90 模块。在您的USE陈述中,您遵循哪种约定:

  1. 使用语法显式声明您正在使用哪些变量/函数/子例程, only :,例如 USE [module_name], only : variable1, variable2, ...
  2. 插入毯子USE [module_name]

一方面,该only子句使代码更加冗长。但是,它会迫使您在代码中重复自己,并且如果您的模块包含大量变量/函数/子例程,事情就会开始变得不规则。

这是一个例子:

更新 希望有人说“Fortran?只需用 C# 重新编码!” 所以我可以否决你。


更新

我喜欢Tim Whitcomb 的回答,它将 FortranUSE modulename与 Python 的from modulename import *. 之前在 Stack Overflow 上的一个话题:

  • “导入模块”或“从模块导入”</a>

    • Mark Roddy 在回答中提到:

      不要使用“从模块导入 *”。对于任何合理的大型代码集,如果您“导入 *”,您可能会将其固定到模块中,无法删除。这是因为很难确定代码中使用的哪些项目来自“模块”,这使得它向东到达您认为不再使用导入但很难确定的地步。

  • python导入的好的经验法则是什么?

    • dbr 的答案包含

      不要这样做 from x import * - 它使您的代码很难理解,因为您无法轻易看到方法的来源(from x import *; from y import *; my_func() - my_func 定义在哪里?)

因此,我倾向于达成共识,即通过以下方式明确说明我在模块中使用的所有项目

正如Stefano Borini所说,

[如果]你有一个太大的模块,以至于你不得不只添加,这意味着你的模块太大了。拆分它。

0 投票
3 回答
2357 浏览

fluent-nhibernate - 流畅的 NHibernate。自动映射和约定

我是 NHibernate 的新手,它的配置方面对我来说似乎总是过于繁重。昨天,我遇到了 Fluent NHibernate 的 Auto Mapping 功能,给我留下了深刻的印象。

为了教育自己,我为自己设定了使用 AutoMappings 和约定尝试“入门第一个项目”(http://wiki.fluentnhibernate.org/show/GettingStartedFirstProject )的挑战。我不得不承认运气不太好。

总结我的步骤:

我在示例中对数据库模式进行了一些小的更改,主要是为了从外键中删除下划线(即 Product_id 到 ProductId),因为这会使它更符合我们的数据库命名标准。

Q1)我尝试使用 ForeignKeyConvention 作为示例编写 IHasManyConvention 实现,但 WithKeyColumn 方法似乎不存在(我认为这是因为我下载了昨天的构建,因此自撰写文章以来设计发生了变化)。我该如何纠正这个问题?

我还对示例中的实体层进行了一些小的更改,因为我认为这会更容易,他们将把 StoresStockedIn 重命名为 Stores (Product.cs) 并将员工重命名为Employees (Store.cs)。

我的代码如下所示:

然后,我尝试按照入门示例将商店、产品和员工添加到数据库中。我在 Commit 上遇到的异常是:

对象引用未保存的瞬态实例 - 在刷新之前保存瞬态实例。类型:FluentNHibernateTesting.Entities.Employee,实体:FluentNHibernateTesting.Entities.Employee

Q2) 我该如何解决这个问题?我理解(从我有限的阅读中)它与正确设置对象关系的级联元素有关,但我对如何使用自动映射有效地进行此操作有点困惑。

Q3) Fluent 项目是否有目标发布日期?我(就像我假设的许多其他人一样)觉得这是一个很好的举措,但我会注意使用它,除非它处于稳定状态。

Q4)在许多博客中提到,他们正在稳步努力实现 Fluent 与 hbn.xml 的功能相同。是否在某处列出了这些缺失的功能,以帮助评估和使用该工具?

提前感谢帮助。

0 投票
6 回答
25622 浏览

ruby - Ruby:布尔属性命名约定和使用

学习红宝石。我的印象是布尔属性应该命名如下:

但是,尝试执行以下操作时出现语法错误:

显然红宝石讨厌“?”。这是约定吗?我究竟做错了什么?