标签: coding-style

我应该使用`import os.path`还是`import os`?

根据官方文档,os.path是一个模块.那么,导入它的首选方式是什么?

# Should I always import it explicitly?
import os.path
Run Code Online (Sandbox Code Playgroud)

要么...

# Is importing os enough?
import os
Run Code Online (Sandbox Code Playgroud)

请不要回答" os为我导入作品".我知道,它现在也适用于我(从Python 2.6开始).我想知道的是关于这个问题的任何官方建议.因此,如果您回答此问题,请发布您的推荐信.

python coding-style python-import

132
推荐指数
6
解决办法
10万
查看次数

如何命名工厂的方法?

我想大多数类似工厂的方法都是从这开始的create.但为什么他们被称为" 创造 "?为什么不" 制造 "," 生产 "," 建立 "," 生成 "或其他什么?这只是品味问题吗?会议?或者"创造"中有特殊含义吗?

createURI(...) 
makeURI(...)
produceURI(...)
buildURI(...)
generateURI(...)
Run Code Online (Sandbox Code Playgroud)

你会选择哪一个?为什么?

methods factory coding-style naming-conventions

130
推荐指数
6
解决办法
4万
查看次数

node.js应用程序的编码样式指南?

node.js有(或几个)编码样式指南吗?如果没有,顶级开源节点项目使用的新兴风格是什么?

我正在寻找PEP 8的指南(或几个指南),这是Python的规范编码风格指南.我已经看到了各种不值得链接的JavaScript指南(主要是旧版和针对客户端JavaScript).我找到了一个有趣的node.js 样式指南.

编码样式指南或编码约定应包括(但不限于):

  • 代码布局:缩进(2个空格,4个空格,制表符......),换行符,换行符等
  • 空格,例如"function(arg)"与"function(arg)"
  • 分号或没有分号,var声明,......
  • 命名,例如,do_this()与doThis(),var_name与varName,...
  • node.js和JavaScript惯用语,例如== vs.=,回调的第一个arg是一个错误对象,...
  • 评论和文件
  • 随附工具,如lint checker,单元测试框架,......

这个话题显然是非常主观的,但我认为这是社区在成熟过程中建立一个共同的,被广泛接受的编码风格的重要一步.而且,这不仅仅是味道.特别是,像"使用===而不是=="这样的规则会对代码质量产生直接影响.

javascript coding-style node.js

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

为什么声明一个只包含C中数组的结构?

我遇到了一些包含以下内容的代码:

struct ABC {
    unsigned long array[MAX];
} abc;
Run Code Online (Sandbox Code Playgroud)

何时使用这样的声明是有意义的?

c arrays struct coding-style

129
推荐指数
5
解决办法
6988
查看次数

有多少构造函数参数太多了?

假设您有一个名为Customer的类,其中包含以下字段:

  • 用户名
  • 电子邮件
  • 名字

我们还要说,根据您的业务逻辑,所有Customer对象都必须定义这四个属性.

现在,我们可以通过强制构造函数指定每个属性来轻松地完成此操作.但是,当您被迫向Customer对象添加更多必需字段时,很容易看出它会如何失控.

我已经看到了在构造函数中加入20多个参数的类,使用它们只是一种痛苦.但是,或者,如果您不需要这些字段,则可能会遇到未定义信息的风险,或者更糟糕的是,如果您依赖调用代码来指定这些属性,则会引发对象引用错误.

有没有替代方案,或者你只需​​要决定X的构造函数参数是否太多,你不能忍受?

parameters refactoring constructor coding-style

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

<STYLE>是否必须位于HTML文档的<HEAD>中?

严格来说,style标签是否需要在headHTML文档中?4.01标准意味着,但没有明确说明:

STYLE元素允许作者将样式表规则放在文档的头部.HTML允许文档的HEAD部分中的任意数量的STYLE元素.

我说"严格来说"因为我有一个应用程序将样式元素放在正文中,而我测试过的所有浏览器似乎都使用了样式元素.我只是想知道这是否合法.

html coding-style html-head

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

如何在Python中打破一系列链式方法?

我有一行以下代码(不要责怪命名约定,它们不是我的):

subkeyword = Session.query(
    Subkeyword.subkeyword_id, Subkeyword.subkeyword_word
).filter_by(
    subkeyword_company_id=self.e_company_id
).filter_by(
    subkeyword_word=subkeyword_word
).filter_by(
    subkeyword_active=True
).one()
Run Code Online (Sandbox Code Playgroud)

我不喜欢它的样子(不要太可读),但我没有任何更好的主意来限制这种情况下,行79个字符.是否有更好的方法来打破它(最好没有反斜杠)?

python coding-style pep8

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

为什么在iOS中使用前导下划线重命名合成属性?

可能重复:
cocoa objective-c类中变量前面的下划线如何工作?

在Xcode 4中创建新项目时,样板代码在将实现文件中的ivars合成为时,会添加下划线字符:

@synthesize window = _window;
Run Code Online (Sandbox Code Playgroud)

要么:

@synthesize managedObjectContext = __managedObjectContext;
Run Code Online (Sandbox Code Playgroud)

有人能告诉我这里完成了什么吗?我不是一个完整的润滑剂,但这是客观的一个方面 - 我不明白.

另一个困惑点; 在app委托实现中,在如上所述合成窗口iVar之后,在应用程序didFinishLaunchingWithOptions:方法中,使用self引用窗口和viewController ivars:

self.window.rootViewController = self.viewController
[self.window makeKeyAndVisible];
Run Code Online (Sandbox Code Playgroud)

但是在dealloc方法中它是_window或_viewController

谢谢

coding-style objective-c ios4

126
推荐指数
3
解决办法
4万
查看次数

什么时候功能太长了?

35线,55线,100线,300线?什么时候应该开始分手?我问,因为我有60行(包括评论)的功能,并且正在考虑将它分开.

long_function(){ ... }
Run Code Online (Sandbox Code Playgroud)

成:

small_function_1(){...}
small_function_2(){...}
small_function_3(){...}
Run Code Online (Sandbox Code Playgroud)

这些函数不会在long_function之外使用,因为较小的函数意味着更多的函数调用等.

你什么时候将一个函数拆分成更小的函数?为什么?

  1. 方法应该只做一个逻辑事情(考虑功能)
  2. 你应该能够用一句话来解释这个方法
  3. 它应该适合您的显示器的高度
  4. 避免不必要的开销(注释明显的评论......)
  5. 对于小型逻辑功能,单元测试更容易
  6. 检查部分函数是否可以被其他类或方法重用
  7. 避免过多的类间耦合
  8. 避免深层嵌套的控制结构

谢谢大家的答案,编辑列表并投票给出正确的答案,我会选择那个;)

我现在正在重构这些想法:)

refactoring coding-style function

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

Haskell函数组合(.)和函数应用程序($)成语:正确使用

我一直在阅读真实世界的哈斯克尔,我即将结束,但风格问题一直在与我(.)($)操作员徘徊.

当你编写一个由其他函数组成的函数时,你可以这样写:

f = g . h
Run Code Online (Sandbox Code Playgroud)

但是当你在这些函数的末尾应用某些东西时,我会这样写:

k = a $ b $ c $ value
Run Code Online (Sandbox Code Playgroud)

但是这本书会像这样写:

k = a . b . c $ value
Run Code Online (Sandbox Code Playgroud)

现在,对我来说,他们看起来功能相同,他们在我眼中完全一样.然而,我看的越多,我就越看到人们以书的方式编写他们的函数:(.)首先构成,然后仅在最后使用($)附加值来评估该批次(没有人用很多美元组成) .

是否有理由使用比使用所有($)符号更好的书籍方式?或者这里有一些我没有得到的最​​佳实践?或者它是多余的,我根本不应该担心它?

haskell coding-style function-composition

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