Tag: 编码风格的

不透明的C结构:他们应该如何申报?

我已经看到了以下两种在C API中声明不透明types的风格。 使用另一种风格有没有明显的优势? 选项1 // foo.h typedef struct foo * fooRef; void doStuff(fooRef f); // foo.c struct foo { int x; int y; }; 选项2 // foo.h typedef struct _foo foo; void doStuff(foo *f); // foo.c struct _foo { int x; int y; };

什么是逗号运算符的正确使用?

我看到了这个代码: if (cond) { perror("an error occurred"), exit(1); } 为什么要这么做? 为什么不只是: if (cond) { perror("an error occurred"); exit(1); }

在交换机中使用“goto”?

我已经看到一个build议的编码标准,读取Never use goto unless in a switch statement fall-through 。 我不跟随。 这个“例外”情况究竟是什么样子,certificategoto是正当的?

完整的JSHint选项默认值列表?

我在哪里可以得到JSHint默认选项的完整列表。 我尝试在网上search,但找不到任何东西。 编辑:我的意思是所有选项的默认值的列表,以防万一它不清楚:)

C#自定义getter / setter没有私有variables

我最近学习了c#,所以当我学会编写属性的时候,我被教导要这样做: public string Name { get; set; } 汽车性能是伟大的! 但是现在我试图做一些更复杂的事情,所以我需要编写一个自定义的访问器对。 private string _Name; public string Name { get { return _Name; } set { _Name = value } } 我知道编译器在使用汽车的时候使得一个私有的实例variables在黑暗的深处变暗,但是我被宠坏了,并且不希望这个私有variables看起来毫无意义。 有没有办法使用自定义访问没有私有variables?

编写健壮的R代码:命名空间,屏蔽和使用`::`运算符

简洁版本 对于那些不想通读我的“案例”的人来说,这就是本质: 什么是推荐的方法,尽量减less新包打破现有代码的机会,即使你写的代码尽可能健壮 ? 在什么时候最好地使用命名空间机制是推荐的方法 a)只使用贡献的软件包(比如在一些R分析项目中)? b)关于开发自己的软件包? 如何避免与正式类 (主要是参考类在我的情况下)的冲突,因为甚至没有一个类似于:: for classes(AFAIU)的命名空间机制? R宇宙的工作方式 这是在我脑海中徘徊了两年的东西,但我不觉得我已经达到了令人满意的解决scheme。 另外我觉得情况越来越糟。 我们看到在CRAN , github , R-Forge等等上的软件包数量不断增加,这真是太棒了。 在这样一个分散的环境中,组成R的代码库(为了简单起见,这就是基础R和贡献R )的代码基础在鲁棒性方面将偏离理想状态:人们遵循不同的惯例,有S3,S4 ,“S4参考课程”等等。如果有一个强制执行的“ 中央清算实例 ”,事情就不可能像“alignment”一样。 没关系。 问题 鉴于上述情况,使用R编写健壮的代码可能非常困难。 并非所有你需要的都在R基础上。对于某些项目,你最终会加载相当多的贡献包。 恕我直言,在这方面最大的问题是命名空间概念在R中使用的方式:R允许简单地写一个特定的函数/方法的名称,而不明确要求它的名称空间(即foo与namespace::foo ) 。 所以为了简单起见,这就是大家正在做的事情。 但是这样一来,名称冲突,破坏代码以及重写/重构代码的需要只是时间问题(或者加载的不同包的数量)。 充其量,你会知道哪些现有的function被新添加的软件包掩盖/重载。 最糟糕的是,你将不知道,直到你的代码中断。 几个例子: 尝试加载RMySQL和RSQLite的时候,他们不太一样 RMongo也会覆盖RMySQL的某些function 预测掩盖了许多与ARIMA相关的function方面的内容 R.utils甚至掩盖了base::parse例程 (我不记得哪些function特别是导致问题,但如果有兴趣,我愿意再看一遍) 令人惊讶的是,这似乎并没有打扰那里的很多程序员。 我试图在r-devel几次提高兴趣,没有任何意义。 使用::运算符的缺点 正如Dominick Samperi 指出的那样,使用::运算符可能会严重影响效率。 在开发你自己的包的时候,你甚至不能在自己的代码中使用::运算符,因为你的代码还没有真正的包,因此也没有名称空间。 所以我将不得不一直坚持foo方式,build立,testing,然后回去改变一切到namespace::foo 。 不是真的。 避免这些问题的可能解决scheme 将每个包中的每个函数重新分配给一个遵循特定命名约定的variables,例如namespace..foo ,以避免与namespace::foo (我在此概述一次)相关的低效率。 […]

Python类中的属性初始化/声明:在哪里放置它们?

我想知道在Python中,在类的主体或__init__函数中初始化对象属性的最佳做法是什么? 即 class A(object): foo = None VS class A(object): def __init__(self): self.foo = None

使用ApplicationContext的inflater时不应用主题/样式

我有主题,指定为TextView TextColor红色。 我正在使用LayoutInflater来实例化TextView。 问题是当使用ApplicationContext创build的inflater时,样式不适用于TextView – 颜色不是红色。 当使用活动创buildLayoutInflater时,所有工作正常。 为什么会发生这种情况,如何解决? /res/values/styles.xml: <?xml version="1.0" encoding="utf-8"?> <resources> <style name="MyTheme"> <item name="android:textViewStyle">@style/MyTextView</item> </style> <style name="MyTextView" parent="@android:style/Widget.TextView"> <item name="android:textColor">#f00</item> </style> </resources> AndroidManifest.xml中: <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/MyTheme" > 码: public class A extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_a); final LayoutInflater goodInflater = getInflater((Activity)this); final LayoutInflater badInflater = […]

你用一段时间结束你的exception信息吗?

我已经看到有和没有句点的两个exception消息。 我可以想一些为什么两个都可以的好理由。 没有点会给你自由添加期限或离开它,如果你想。 如果邮件进入某种标题栏或某物,可能会有用。 用一个点,你总是会知道你有一个“完整的句子”,看起来更完整。 你推荐哪一个? 也可能是本地化资源string中的问题。 很明显,你不能在所有事情之后放置一段时间(在button和菜单项上的文本之后的周期看上去很奇怪)。 但是,你是否应该把所有的时间都放在一致的地方,然后在有用的地方添加它? 或者你宁愿放一个看起来合适的时期? 例如,在所有的资源string和exception消息是句子之后,而不是在那些单词之后。 但是,那么短句怎么样呢? 比如“创build一个新文件”。 也许可以省略那些被认为是行动的string…(只是想在我在这里打字… 不是世界上最重要的事情,我知道。 但是像这样的小事在一段时间之后往往会让我烦恼。 我喜欢一致性,并知道为什么我要做我所做的事情。 问题是我不确定哪一个要去:p

你如何协调普通的C ++命名约定和库的命名约定

大多数C ++命名约定规定使用camelCaseIdentifiers :以类( Person , Booking )的大写字母开头的名称和以字母和variables( getPrice() , isValid() , largestValue )的小写字母开头的名称。 这些build议与C ++库的命名约定完全不一致,它们涉及类( string , set , map , fstream )的小写名称和方法和字段( find_first_of , lower_bound , reverse_iterator , first_type )的first_type 。 使图片更加复杂的是操作系统和C库函数,它们涉及在C和Unix中压缩的小写字母名称,以及在Windows中以大写字母开头的函数。 因此,我的代码是一团糟,因为一些标识符使用C ++库,C或操作系统命名约定,而其他标识符使用规定的C ++约定。 编写包装库function的类或方法是很痛苦的,因为类似的东西会以不同风格的名字结尾。 那么,你如何调和这些不同的命名约定呢?