标签: conventions

在Ruby和/或Rails中定义自定义错误类型的位置?

是否有在Ruby库(gem)或Ruby on Rails应用程序中定义自定义错误类型的最佳实践?特别:

  1. 他们在结构上属于哪个项目?在其他地方有一个单独的文件,内联相关的模块/类定义?
  2. 有没有建立任何时候约定,当创建一个新的错误类型?

不同的图书馆有不同的做事方式,我没有注意到任何真实的模式.有些库总是使用自定义错误类型,而有些库根本不使用它们; 有些错误扩展了StandardError而其他错误有嵌套层次结构; 有些只是空类定义,有些则有各种巧妙的技巧.

哦,只是因为我觉得调用这些"错误类型"有点含糊不清,我的意思是:

class AuthenticationError < StandardError; end
class InvalidUsername < AuthenticationError; end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails conventions

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

如果在for循环中使用<或<=

如果你不得不循环7次循环,你会使用:

for (int i = 0; i < 7; i++)
Run Code Online (Sandbox Code Playgroud)

要么:

for (int i = 0; i <= 6; i++)
Run Code Online (Sandbox Code Playgroud)

有两个注意事项:

  • 性能
  • 可读性

为了性能,我假设Java或C#.使用"小于"或"小于或等于"是否重要?如果您对其他语言有所了解,请说明哪些语言.

为了便于阅读,我假设基于0的数组.

UPD:我提到的基于0的数组可能会让人感到困惑.我不是在讨论迭代数组元素.只是一个循环.

关于使用常数可以解释这个神奇数字是什么,下面有一个好点.所以,如果我有" int NUMBER_OF_THINGS = 7"然后" i <= NUMBER_OF_THINGS - 1"看起来很奇怪,不会.

performance readability conventions

122
推荐指数
9
解决办法
3万
查看次数

导入内部函数是pythonic吗?

PEP 8说:

  • 导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前.

在发生时,我违反了PEP 8.有时我会在函数中导入内容.作为一般规则,如果导入仅在单个函数中使用,则执行此操作.

任何意见?

编辑(我觉得导入函数的原因可能是一个好主意):

主要原因:它可以使代码更清晰.

  • 在查看函数的代码时,我可能会问自己:"什么是函数/类xxx?" (在函数内部使用xxx).如果我在模块的顶部有我的所有导入,我必须去那里查看xxx是什么.这在使用时更是一个问题from m import xxx.看到m.xxx这个功能可能会告诉我更多.具体取决于m:它是一个众所周知的顶级模块/包(import m)吗?或者它是一个子模块/包(from a.b.c import m)?
  • 在某些情况下,使用接近使用xxx的额外信息("什么是xxx?")可以使函数更容易理解.

python conventions

112
推荐指数
8
解决办法
4万
查看次数

斯威夫特:守卫vs如果让

我一直在阅读关于Swift中的Optionals,我已经看过if let用于检查Optional是否包含值的示例,以及它是否存在 - 使用unwrapped值执行某些操作.

但是,我已经看到在Swift 2.0中,关键字guard主要用于.我想知道是否if let已从Swift 2.0中删除或是否仍然可以使用它.

我应该改变我的计划包含if letguard

conventions optional control-flow swift swift2

105
推荐指数
8
解决办法
4万
查看次数

数组应该在C++中使用吗?

由于std::liststd::vector存在,是有什么原因在C++中使用传统的C数组,还是应该尽量避免,只是喜欢malloc

c++ arrays conventions

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

在Ruby中放置私有方法的位置?

大多数博客或教程或书籍都在任何类/模块的底部都有私有方法.这是最好的做法吗?

我发现有必要使用私人方法更方便.例如:

public
def my_method
  # do something
  minion_method
end

private
def minion_method
  # do something
end

public
def next_method
end
Run Code Online (Sandbox Code Playgroud)

这样我发现代码更具可读性,而不是连续上下滚动,这是非常恼人的.

这种方法有什么可怕的错误吗?在底层有私人方法不仅仅是最佳实践和其他东西吗?

ruby conventions

94
推荐指数
8
解决办法
6万
查看次数

学习蚂蚁路径风格

我在哪里可以找到学习Ant路径样式约定的资源?我已经去了Ant站点,但找不到路径样式的任何信息.

java ant conventions path

87
推荐指数
4
解决办法
7万
查看次数

Objective-C:断言与异常与错误

在Cocoa中,何时应该使用NSAssert,NSException,NSError?

这就是我一直在想的:

NSAssert - 在创建任何用于程序员自身利益的客户端程序时,可以仔细检查规则,约定,假设或前置条件和后置条件?

NSException - 为了使用该库的其他程序员的利益创建第三方库,以便他们立即知道输入何时无效?

NSError - 当与外部系统连接以获取不保证给我结果的文件,数据库或Web服务等数据时?

cocoa conventions objective-c

79
推荐指数
1
解决办法
2万
查看次数

程序员应该使用布尔变量来"记录"他们的代码吗?

我正在阅读McConell的Code Complete,他讨论了使用布尔变量来记录代码.例如,而不是:

if((elementIndex < 0) || (MAX_ELEMENTS < elementIndex) || 
   (elementIndex == lastElementIndex)){
       ...
}
Run Code Online (Sandbox Code Playgroud)

他建议:

finished = ((elementIndex < 0) || (MAX_ELEMENTS < elementIndex));
repeatedEntry = (elementIndex == lastElementIndex);
if(finished || repeatedEntry){
   ...
}
Run Code Online (Sandbox Code Playgroud)

这让我感到逻辑,良好的实践和非常自我记录.但是,我对于经常使用这种技术犹豫不决,因为我几乎从未遇到过这种技术; 也许只是因为稀有而令人困惑.然而,我的经验还不是很大,所以我有兴趣听听程序员对这种技术的看法,我很想知道是否有人经常使用这种技术或者在阅读代码时经常看到它.这是一个值得采用的约定/风格/技术吗?其他程序员会理解并欣赏它,还是认为它很奇怪?

boolean conventions self-documenting

78
推荐指数
4
解决办法
3509
查看次数

Netbeans 7.4每个方法规则引入"最多10行".这条规则来自哪里?

NetBeans 7.4 beta目前可供公众下载,默认情况下它引入了一个奇怪的警告规则:

方法长度为16行(允许10行)

我的问题是:这是一个公认的代码约定规则,可以在某个地方证明某种程度吗?NetBeans支持/开发人员说它不是一个bug,但是不要说明为什么它们只允许10行,以及这个规则究竟来自何处.

methods netbeans coding-style conventions

78
推荐指数
2
解决办法
3万
查看次数