可能是重复的,但不是一个容易搜索的...
给出如下标题:
namespace ns1
{
class MyClass
{
void method();
};
}
Run Code Online (Sandbox Code Playgroud)
我看到method()在.cpp文件中以多种方式定义:
namespace ns1
{
void MyClass::method()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
using namespace ns1;
void MyClass::method()
{
...
}
Run Code Online (Sandbox Code Playgroud)
void ns1::MyClass::method()
{
...
}
Run Code Online (Sandbox Code Playgroud)
有没有'正确'的方法呢?这些都是"错误的",因为它们并不都意味着同样的事情吗?
是否有任何充分的理由避免Java中未使用的import语句?据我所知,它们适用于编译器,因此许多未使用的导入不会对编译的代码产生任何影响.它只是为了减少混乱并避免命名冲突吗?
(我问,因为Eclipse给出了一个关于未使用的导入的警告,这在我开发代码时有点烦人,因为我不想删除导入,直到我很确定我已经完成了设计类的操作.)
你怎么打破一个很长的列表理解?
[something_that_is_pretty_long for something_that_is_pretty_long in somethings_that_are_pretty_long]
Run Code Online (Sandbox Code Playgroud)
我也看到过某些人不喜欢使用'\'来分解线条,但却从不理解为什么.这背后的原因是什么?
例如,拿这段代码:
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
我知道#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) 我打算做一个侧面项目,其目标是将代码从一种编程语言转换为另一种编程语言.我开始使用的语言是PHP和Python(Python到PHP应该更容易开始),但理想情况下我可以添加其他语言(相对)轻松.计划是:
这是面向Web开发的.原始代码和目标代码将位于框架之上(我也必须编写).这些框架将采用MVC设计模式并遵循严格的编码约定.这应该使翻译更容易一些.
我也在研究IOC和依赖注入,因为它们可能使翻译过程更容易,更不容易出错.
我将使用Python的解析器模块,它让我摆弄抽象语法树.显然,我可以用PHP获得的最接近的是token_get_all(),这是一个开始.
从那时起,我可以构建AST,符号表和控制流程.
然后我相信我可以开始输出代码了.我不需要完美的翻译.我仍然需要检查生成的代码并修复问题.理想情况下,翻译人员应标记有问题的翻译.
在你问"这到底是什么意思?"之前 答案是......这将是一次有趣的学习经历.如果您对如何减少这种麻烦有任何见解,请告诉我.
我更感兴趣的是知道我可以在代码上强制执行哪种模式,以便更容易翻译(即:IoC,SOA?)代码而不是如何进行翻译.
php python compiler-construction coding-style abstract-syntax-tree
从阅读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代码中每隔一次出现的推荐空格不一致吗?
怎么:
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)
记住,这个问题更多的是关于kwargs而不是默认值,我只是使用了PEP 8中的措辞.
我不是在征求意见.我在问这个决定背后的原因.这更像是问我为什么要在C程序中使用{与if语句相同的行,而不是我是否应该使用它.
好的,这件事在我目前的工作中引起了一些摩擦,我真的没想到.有组织的内部软件开发是一个新概念,我已经制定了一些编码指南的初稿.
我建议永远不要将"注释掉"的代码检入存储库.我之所以这样说的原因是存储库保存了文件的完整历史记录.如果要删除功能代码,请将其完全删除.存储库会保留您的更改,以便轻松查看更改内容.
这引起了一些摩擦,因为另一位开发商认为采取这种方式限制太多.这位开发人员希望能够注释掉他正在处理但尚未完成的一些代码.然后,此代码将永远不会被签入,然后不会保存在任何地方.我们将使用TFS,因此我建议搁置更改将是最正确的解决方案.然而,它并未被接受,因为他希望能够检查可能部署或不部署的部分更改.
我们希望最终能够充分利用持续集成并自动部署到开发Web服务器.目前没有Web服务器或数据库服务器的开发版本,但很快就会更改.
无论如何,你有什么想法?您是否认为"注释掉"代码对存储库有用?
我很想听听其他人对这个话题的看法.
编辑:为清楚起见,我们不使用私有分支.如果我们这样做,那么我会说你的私人分支做你想要的,但不要将已注释的代码与主干或任何共享分支合并.
编辑:我们没有使用私有或每个用户分支的正当理由.这不是我不同意的概念.我们还没有这样设置.也许这是最终的中间立场.现在我们使用TFS搁架.