标签: coding-style

字符串输出:C#中的格式或concat?

假设您要输出或连接字符串.您更喜欢以下哪种款式?

  • var p = new { FirstName = "Bill", LastName = "Gates" };

  • Console.WriteLine("{0} {1}", p.FirstName, p.LastName);

  • Console.WriteLine(p.FirstName + " " + p.LastName);

你更喜欢使用格式还是简单地连接字符串?什么是你最喜欢的?其中一个伤害了你的眼睛吗?

你有任何理性的论据来使用一个而不是另一个吗?

我会去第二个.

c# string string.format coding-style

175
推荐指数
14
解决办法
9万
查看次数

您被迫遵循的最奇怪的编码标准规则是什么?

当我问这个问题时,我几乎总是肯定是的,你应该有编码标准.

您曾被迫遵循的最奇怪的编码标准规则是什么?

而最奇怪的是,我的意思是最有趣,或者最糟糕,或者只是简单的奇怪.

在每个答案中,请提及哪种语言,您的团队规模,以及它对您和您的团队造成的影响.

coding-style

173
推荐指数
72
解决办法
23万
查看次数

C#中的枚举应该有自己的文件吗?

我有一个使用枚举的类,枚举当前在它自己的文件中,这看起来很浪费.

将枚举放在文件命名空间中的一般意见是什么?或者枚举真的应该存在于自己的cs文件中吗?

编辑

我应该提一下,虽然有问题的类使用这些枚举,但外部调用者也是如此.换句话说,另一个类可以设置这些枚举.因此,他们不会在课堂内部使用,否则这个问题将毫无疑问.

c# enums coding-style

172
推荐指数
13
解决办法
6万
查看次数

C++中的内部typedef - 好风格还是坏风格?

我最近发现自己经常做的事情是声明与该类中的特定类相关的typedef,即

class Lorem
{
    typedef boost::shared_ptr<Lorem> ptr;
    typedef std::vector<Lorem::ptr>  vector;

//
// ...
//
};
Run Code Online (Sandbox Code Playgroud)

然后在代码中的其他地方使用这些类型:

Lorem::vector lorems;
Lorem::ptr    lorem( new Lorem() );

lorems.push_back( lorem );
Run Code Online (Sandbox Code Playgroud)

我喜欢它的原因:

  • 它减少了类模板引入的噪音,std::vector<Lorem>变成了Lorem::vector等等.
  • 它用作意图陈述 - 在上面的示例中,Lorem类旨在通过boost::shared_ptr向量计数并存储在向量中.
  • 它允许实现改变 - 即如果Lorem需要boost::intrusive_ptr在稍后阶段被改变为侵入式引用计数(via ),那么这将对代码产生最小的影响.
  • 我认为它看起来"更漂亮",可以说更容易阅读.

我不喜欢它的原因:

  • 有时依赖性问题 - 如果你想Lorem::vector在另一个类中嵌入,但只需要(或想要)转发声明Lorem(而不是引入对其头文件的依赖),那么你最终必须使用显式类型(例如boost::shared_ptr<Lorem>而不是Lorem::ptr),这有点不一致.
  • 它可能不是很常见,因此难以理解?

我试着对我的编码风格保持客观,所以最好能得到一些其他意见,这样我就可以稍微剖析一下我的想法.

c++ coding-style typedef

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

好坏练习?在getter中初始化对象

我似乎有一种奇怪的习惯......据我的同事说,至少.我们一直在一个小项目上工作.我编写类的方式是(简化示例):

[Serializable()]
public class Foo
{
    public Foo()
    { }

    private Bar _bar;

    public Bar Bar
    {
        get
        {
            if (_bar == null)
                _bar = new Bar();

            return _bar;
        }
        set { _bar = value; }
    }
}
Run Code Online (Sandbox Code Playgroud)

所以,基本上,我只在调用getter并且字段仍然为null时初始化任何字段.我认为这可以通过不初始化任何地方没有使用的任何属性来减少过载.

ETA:我这样做的原因是我的类有几个属性返回另一个类的实例,而这个属性又具有更多类的属性,依此类推.调用顶级类的构造函数随后将调用所有这些类的所有构造函数,而不是总是需要它们.

除个人偏​​好外,是否有任何反对这种做法的反对意见?

更新:我已经考虑了很多关于这个问题的不同意见,我将坚持我接受的答案.但是,我现在对这个概念有了更好的理解,我能够决定何时使用它,何时不能.

缺点:

  • 线程安全问题
  • 当传递的值为null时,不遵守"setter"请求
  • 微优化
  • 异常处理应该在构造函数中进行
  • 需要在类'代码中检查null

优点:

  • 微优化
  • 属性永远不会返回null
  • 延迟或避免加载"重"物体

大多数缺点不适用于我当前的库,但是我必须测试"微优化"是否实际上是在优化任何东西.

最后更新:

好的,我改变了答案.我最初的问题是这是否是一个好习惯.我现在确信它不是.也许我仍会在我当前代码的某些部分使用它,但不是无条件的,绝对不是所有的时间.因此,在使用它之前,我会失去习惯并思考它.感谢大家!

c# getter coding-style

167
推荐指数
8
解决办法
2万
查看次数

163
推荐指数
6
解决办法
14万
查看次数

如何在JavaScript中设置多个CSS样式?

我有以下JavaScript变量:

var fontsize = "12px"
var left= "200px"
var top= "100px"
Run Code Online (Sandbox Code Playgroud)

我知道我可以像这样迭代地将它们设置为我的元素:

document.getElementById("myElement").style.top=top
document.getElementById("myElement").style.left=left
Run Code Online (Sandbox Code Playgroud)

有可能一次将它们全部设置在一起,就像这样吗?

document.getElementById("myElement").style = allMyStyle 
Run Code Online (Sandbox Code Playgroud)

javascript coding-style

161
推荐指数
10
解决办法
23万
查看次数

std :: for_each优于for循环的优点

std::for_eachfor循环有什么优点吗?对我来说,std::for_each似乎只是阻碍了代码的可读性.为什么有些编码标准推荐使用?

c++ foreach stl coding-style

158
推荐指数
9
解决办法
11万
查看次数

使用Null Coalescing运算符的独特方法

我知道在C#中使用Null合并运算符的标准方法是设置默认值.

string nobody = null;
string somebody = "Bob Saget";
string anybody = "";

anybody = nobody   ?? "Mr. T"; // returns Mr. T
anybody = somebody ?? "Mr. T"; // returns "Bob Saget"
Run Code Online (Sandbox Code Playgroud)

但还有什么可以??用于?它不像三元运算符那样有用,除了比以下更简洁和更容易阅读:

nobody = null;
anybody = nobody == null ? "Bob Saget" : nobody; // returns Bob Saget
Run Code Online (Sandbox Code Playgroud)

所以考虑到甚至更少知道空合并运算符......

  • 你有没有用过??别的东西?

  • ??必要的,还是应该只使用三元运算符(大多数人都熟悉)

c# null coding-style conditional-operator null-coalescing-operator

157
推荐指数
11
解决办法
6万
查看次数

是否有正当理由在当天和年龄的代码文件中强制执行最大宽度为80个字符?

认真.在一台22英寸的显示器上,它只能覆盖屏幕的四分之一.我需要一些弹药来制定这个规则.


我不是说不应该有限制; 我只是说,80个字符非常小.

policy coding-style text-editor

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