标签: coding-style

在.cpp文件中定义C++命名空间方法的正确方法

可能是重复的,但不是一个容易搜索的...

给出如下标题:

namespace ns1
{
 class MyClass
 {
  void method();
 };
}
Run Code Online (Sandbox Code Playgroud)

我看到method()在.cpp文件中以多种方式定义:

版本1:

namespace ns1
{
 void MyClass::method()
 {
  ...
 }
}
Run Code Online (Sandbox Code Playgroud)

版本2:

using namespace ns1;

void MyClass::method()
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

版本3:

void ns1::MyClass::method()
{
 ...
}
Run Code Online (Sandbox Code Playgroud)

有没有'正确'的方法呢?这些都是"错误的",因为它们并不都意味着同样的事情吗?

c++ coding-style namespaces

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

有什么理由清除Java中未使用的导入,除了减少混乱?

是否有任何充分的理由避免Java中未使用的import语句?据我所知,它们适用于编译器,因此许多未使用的导入不会对编译的代码产生任何影响.它只是为了减少混乱并避免命名冲突吗?

(我问,因为Eclipse给出了一个关于未使用的导入的警告,这在我开发代码时有点烦人,因为我不想删除导入,直到我很确定我已经完成了设计类的操作.)

java eclipse import coding-style

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

python中列表推导或生成器表达式的行继续

你怎么打破一个很长的列表理解?

[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]
Run Code Online (Sandbox Code Playgroud)

我也看到过某些人不喜欢使用'\'来分解线条,但却从不理解为什么.这背后的原因是什么?

python coding-style list-comprehension pep8

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

有人还在C#中使用[goto],如果是这样,为什么?

我想知道是否还有人在C#中使用"goto"关键字语法,以及可能的原因.

我倾向于查看任何导致读者跳过代码作为不良做法的陈述,但想知道是否有任何可信的场景使用这样的语法?

转到关键字定义

.net c# coding-style goto

96
推荐指数
6
解决办法
7万
查看次数

使用不同于其类型的变量名称,我是不道德的?

例如,拿这段代码:

var person = new Person();
Run Code Online (Sandbox Code Playgroud)

或者你的Pythonistas:

person = Person()
Run Code Online (Sandbox Code Playgroud)

我不断被告知这有多糟糕,但还没有看到这两行代码不道德的例子.对我来说,人是一个人,并试图给它另一个名字是浪费时间.我想在语法突出显示之前的几天,这将是一个大问题.但是现在,除了变量名之外,告诉类型名称很容易.哎呀,在SO上看到差异很容易.

还是有什么我想念的?如果是这样,如果您能提供导致问题的代码示例,将会很有帮助.

language-agnostic coding-style naming-conventions variable-names

95
推荐指数
9
解决办法
3996
查看次数

缩进#defines

我知道#defines等通常不会缩进.为什么?

我正在使用一些代码,其中包含#defines,#ifdefs,#elses,#endifs等的可怕混合.所有这些通常与正常的C代码混合在一起.#defines 的非缩进使它们难以阅读.缩进代码与非缩进#defines的混合是一场噩梦.

不缩进#define的好处是什么?如果我缩进它会不会让我成为一个坏人?这不是更好吗?

#ifdef SDCC
    #if DEBUGGING == 1
        #if defined (pic18f2480)
            #define FLASH_MEMORY_END 0x3DC0
        #elif defined (pic18f2580)
            #define FLASH_MEMORY_END 0x7DC0
        #else
            #error "Can't set  up flash memory end!"
        #endif
    #else
        #if defined (pic18f2480)
            #define FLASH_MEMORY_END 0x4000
        #elif defined (pic18f2580)
            #define FLASH_MEMORY_END 0x8000
        #else
            #error "Can't set  up flash memory end!"
        #endif
    #endif
#else
    #if DEBUGGING == 1
        #define FLASH_MEMORY_END 0x7DC0
    #else
        #define …
Run Code Online (Sandbox Code Playgroud)

c coding-style code-formatting indentation c-preprocessor

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

我可以对代码强制执行哪些模式,以便更容易翻译成另一种编程语言?

我打算做一个侧面项目,其目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下我可以添加其他语言(相对)轻松.计划是:

  • 这是面向Web开发的.原始代码和目标代码将位于框架之上(我也必须编写).这些框架将采用MVC设计模式并遵循严格的编码约定.这应该使翻译更容易一些.

  • 我也在研究IOC和依赖注入,因为它们可能使翻译过程更容易,更不容易出错.

  • 我将使用Python的解析器模块,它让我摆弄抽象语法树.显然,我可以用PHP获得的最接近的是token_get_all(),这是一个开始.

  • 从那时起,我可以构建AST,符号表和控制流程.

然后我相信我可以开始输出代码了.我不需要完美的翻译.我仍然需要检查生成的代码并修复问题.理想情况下,翻译人员应标记有问题的翻译.

在你问"这到底是什么意思?"之前 答案是......这将是一次有趣的学习经历.如果您对如何减少这种麻烦有任何见解,请告诉我.


编辑:

我更感兴趣的是知道我可以在代码上强制执行哪种模式,以便更容易翻译(即:IoC,SOA?)代码而不是如何进行翻译.

php python compiler-construction coding-style abstract-syntax-tree

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

链式方法在Python中调用缩进样式

从阅读PEP-8开始,我得知你应该将右括号放在与函数调用中最后一个参数相同的行上:

ShortName.objects.distinct().filter(
    product__photo__stockitem__isnull=False)
Run Code Online (Sandbox Code Playgroud)

也许,长表达最好避免.但是,如果这是不受欢迎的,你将如何进行多个链式方法调用?闭幕式是否应该换新线?

ShortName.objects.distinct().filter(
    product__photo__stockitem__isnull=False
).values_list('value', flat=True)
Run Code Online (Sandbox Code Playgroud)

那些无参数方法呢?如何在不引用中间返回值的情况下在多行上编写它们?

ShortName.objects.distinct(
    ).filter().values() # looks ugly
Run Code Online (Sandbox Code Playgroud)

更新:如何在Python中打破一系列链式方法有一个重复的问题.该接受的答案建议开始以点每个新线的熟悉从jQuery的风格.作者没有提供任何理由或权威参考,所以我想得到关于这种风格或替代方案的确认.

python django coding-style pep8

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

PEP 8,为什么关键字参数中的'='周围没有空格或默认参数值?

为什么PEP 8建议=在关键字参数或默认参数值中没有空格

这与=Python代码中每隔一次出现的推荐空格不一致吗?

怎么:

func(1, 2, very_long_variable_name=another_very_long_variable_name)
Run Code Online (Sandbox Code Playgroud)

优于:

func(1, 2, very_long_variable_name = another_very_long_variable_name)
Run Code Online (Sandbox Code Playgroud)

任何由Python的BDFL讨论/解释的链接都将受到赞赏.

记住,这个问题更多的是关于kwargs而不是默认值,我只是使用了PEP 8中的措辞.

我不是在征求意见.我在问这个决定背后的原因.这更像是问我为什么要在C程序中使用{if语句相同的行,而不是我是否应该使用它.

python coding-style pep8

95
推荐指数
7
解决办法
3万
查看次数

签入"已注释掉"的代码

好的,这件事在我目前的工作中引起了一些摩擦,我真的没想到.有组织的内部软件开发是一个新概念,我已经制定了一些编码指南的初稿.

我建议永远不要将"注释掉"的代码检入存储库.我之所以这样说的原因是存储库保存了文件的完整历史记录.如果要删除功能代码,请将其完全删除.存储库会保留您的更改,以便轻松查看更改内容.

这引起了一些摩擦,因为另一位开发商认为采取这种方式限制太多.这位开发人员希望能够注释掉他正在处理但尚未完成的一些代码.然后,此代码将永远不会被签入,然后不会保存在任何地方.我们将使用TFS,因此我建议搁置更改将是最正确的解决方案.然而,它并未被接受,因为他希望能够检查可能部署或不部署的部分更改.

我们希望最终能够充分利用持续集成并自动部署到开发Web服务器.目前没有Web服务器或数据库服务器的开发版本,但很快就会更改.

无论如何,你有什么想法?您是否认为"注释掉"代码对存储库有用?

我很想听听其他人对这个话题的看法.

编辑:为清楚起见,我们不使用私有分支.如果我们这样做,那么我会说你的私人分支做你想要的,但不要将已注释的代码与主干或任何共享分支合并.

编辑:我们没有使用私有或每个用户分支的正当理由.这不是我不同意的概念.我们还没有这样设置.也许这是最终的中间立场.现在我们使用TFS搁架.

version-control tfs coding-style

94
推荐指数
11
解决办法
1万
查看次数