标签: conventions

圆括号与否?有什么不同?

我最近看到过这两件事,我有点困惑.

var blah = new MyClass() { Name = "hello" } 
Run Code Online (Sandbox Code Playgroud)

var blah = new MyClass { Name = "hello" } 
Run Code Online (Sandbox Code Playgroud)

有什么不同?为什么他们都工作?

更新: 这是否意味着,如果我在构造函数中有一些东西做了一些计算,我将不得不调用第一个?

c# asp.net class conventions

3
推荐指数
1
解决办法
1227
查看次数

CSS Box模型属性排序约定

如果你以什么顺序输入你的CSS属性纳闷像border,padding,font-family,等两种常见的方法似乎是字母和盒状模型.(参见: CSS属性的常规顺序)

这不与选择(相混淆#id,.class,:hover,tagname在这种情况下,为了事项非常多).

字母顺序选项对我来说没什么意义.一方面它坚持paddingline-height在中间widthheightlefttop.

我将使用jacobangel提供的fordinteractive.com 列表发布CW答案.

这是非常好的,但它并不完整.有一些项目丢失了.我希望找出失踪人员去的地方font-styleclip.

这些新的应该放在列表中的哪个位置?还有其他人失踪吗?如果已经有同样的建议,那么投票给该评论,表明你认为这是一个好主意.也可能会有更多缺失的东西.我希望这是一个完整的清单.如果有一个工具或IDE功能可以按此列表排序,那也是一个好主意.

我发布这个是因为似乎没有其他页面可以在谷歌找到,而我所知道的那个页面是不完整的(甚至在谷歌上我都找不到).我希望如果编辑新的,我们将有一个完整的列表,每个人都可以遵循.

css attributes conventions

3
推荐指数
1
解决办法
1898
查看次数

为什么在setter之前定义getter(编码约定)

我很欣赏这个问题有点傻,所以如果这不是主题或非建设性的话,我会事先道歉.

为什么在C#中使用getter之前用getter定义属性是标准约定?对于具有这两者的属性,您几乎总是在getter之前使用setter,因此它处于有效状态.因此,我首先定义吸气剂似乎有些落后.

此外,setter通常会有一些验证逻辑,getter不需要.在吸气剂之前使用这个逻辑以使其更清楚地表明属性应该如何表现是不是更整洁.例如:

public decimal Price
{
    get { return _price; }
    set
    {
        if(value < 0m)
        {
            throw new ArgumentOutOfRangeException();
        }

        _price = value;
        OnPropertyChanged("Price");
    }
}
Run Code Online (Sandbox Code Playgroud)

setter中的代码比getter更有趣,如果它不优先并且首先定义?

*我知道这些东西没有规则,但实际上每个例子都有,属性在setter之前定义了getter.

c# coding-style properties conventions

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

Ninject 3.0中基于约定的绑定

我正在尝试在我的新项目上设置Ninject,我想使用对流来扫描组件

IFoo
Run Code Online (Sandbox Code Playgroud)

将自动解决

IBar
Run Code Online (Sandbox Code Playgroud)

所有样本和文档都描述了使用这种方法

kernel.Scan(...)
Run Code Online (Sandbox Code Playgroud)

虽然Ninject 3 Kernel似乎使用了.Load.如果我使用Load进行扫描,那么如何使用约定配置扫描?

编辑

我能够使用它来运行:https://github.com/ninject/ninject.extensions.conventions/wiki/What-is-configuration-by-convention

但是,现在我无法加载我的模块.我正在使用下面的代码并得到以下错误.

    IKernel kernel = new StandardKernel();
    kernel.Bind(x => x
        .FromAssembliesMatching("Crt.*.dll")
        .SelectAllTypes()
        .BindAllInterfaces()
        );
    kernel.Load("*.dll");
    return kernel;
Run Code Online (Sandbox Code Playgroud)

错误:

Ninject.ActivationException was unhandled
  Message=Error activating ITrainingEngine
More than one matching bindings are available.
Activation path:
  1) Request for ITrainingEngine

Suggestions:
  1) Ensure that you have defined a binding for ITrainingEngine only once.

  Source=Ninject
  StackTrace:
       at Ninject.KernelBase.Resolve(IRequest request) in c:\Projects\Ninject\ninject\src\Ninject\KernelBase.cs:line 380
       at Ninject.ResolutionExtensions.GetResolutionIterator(IResolutionRoot root, Type service, Func`2 constraint, IEnumerable`1 parameters, …
Run Code Online (Sandbox Code Playgroud)

conventions ninject-3

3
推荐指数
1
解决办法
2118
查看次数

为什么<meta>和<title>标签以这种方式排序?

 <meta charset="utf-8">
 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 <title>Test Title</title>
 <meta name="description" content="">
 <meta name="viewport" content="width=device-width">
Run Code Online (Sandbox Code Playgroud)

为什么两个meta标签总是在标题之前,其他之后?

是否有任何原因(兼容性,编码参考或规则)我不能在标题之前放置所有元标记?

html specifications reference conventions

3
推荐指数
1
解决办法
85
查看次数

F#在do块中包装语句

我有一个关于在F#中使用do块的约定的问题.在使用.NET库类和其他.NET代码时,首先会出现这种情况.

让我给你举个例子.

1.使用do块包含语句:

let drawHelloName (width:int, height:int) name = 
    let bmp = new Bitmap(width, height)
    use fnt = new Font("Arial", 12.0f)
    use gr = Graphics.FromImage(bmp)
    do
        gr.Clear(Color.White)
        gr.DrawString(name, fnt, Brushes.Black, PointF(10.0f, 10.0f))
    bmp
Run Code Online (Sandbox Code Playgroud)

2.没有阻止:

let drawHelloName (width:int, height:int) name = 
    let bmp = new Bitmap(width, height)
    use fnt = new Font("Arial", 12.0f)
    use gr = Graphics.FromImage(bmp)
    gr.Clear(Color.White)
    gr.DrawString(name, fnt, Brushes.Black, PointF(10.0f, 10.0f))
    bmp
Run Code Online (Sandbox Code Playgroud)

现在在我看来,我认为例子1更清晰,更符合F#的观点和风格.由于在函数式编程中处理语句并不是"自然",因此我们将语句显式地包装在do块中以表明它们是副作用.但我想知道,关于这个的惯例是什么?

f# functional-programming conventions statements

3
推荐指数
1
解决办法
222
查看次数

React Native - 在任何地方留下尾随逗号有什么意义?

在使用React Native时,我注意到它的'贡献者和示例中的一些奇怪的约定 - 在任何地方留下尾随逗号,作为示例:

重点是什么?

javascript conventions jshint react-native

3
推荐指数
1
解决办法
1248
查看次数

编码约定:CAPITAL_LETTERS中的最终类实例?

final原始类型的常量()应该用CAPITAL_LETTERS编写.但是一个类实例怎么样?例如,当它作为函数参数传递时,从内部类调用,应该声明为final.所有参数都应该是最终的吗?应该这样:

public static void myFunction(
    final MyClass CLASS_INSTANCE) {

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

java final conventions

3
推荐指数
1
解决办法
420
查看次数

Django help_text行长约定

我想知道在将help_text和其他硬编码的长行输入到Python / Django中时,行长的约定是什么。我已经阅读了PEP-8,其中的代码和注释涵盖了行长,但是我不确定这对长文本字符串适用。

这是字段“ explanation_text”和help_text字段的选项。

class Question(models.Model):
    questionnaire = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
    title = models.CharField(max_length=150, blank=False)
    category = models.CharField(max_length=20, blank=False)
    created_date = models.DateTimeField(default=datetime.now, blank=True)
    explanation_text = models.TextField(
        blank=True,
        help_text="Explanation text goes here. Candidates will be able to see this after they have taken a questionnaire. To change this, refer to the setting on questionnaire administration. Max length is 1000 characters.",
        max_length=1000)

    def __str__(self):
        return self.title
Run Code Online (Sandbox Code Playgroud)

python django conventions pep8

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

从子模块导入Python软件包时避免pylint抱怨

背景

我有一个Python应用程序,它依赖于另一个作为git子模块提供的包,产生类似于以下内容的目录结构:

foo/
    bar/
        bar/
            __init__.py
            eggs.py
        test/
        setup.py
    foo/
        __init__.py
        ham.py
    main.py
Run Code Online (Sandbox Code Playgroud)

从顶层目录执行该访问foo包就足够简单了。但是该程序包嵌套在另一个目录中,不能直接导入。main.pyfoo/barbar

通过sys.path在以下内容的开头进行修改,可以轻松解决此问题main.py

import sys

# Or sys.path.append()
sys.path.insert(0, './bar')

from bar.eggs import Eggs
from foo.ham import Ham
Run Code Online (Sandbox Code Playgroud)

(注意:此代码示例假定main.py将始终从中调用foo/;如果情况并非如此,则'.bar'可以将其替换,os.path.join(os.path.dirname(__file__), 'bar')尽管这样做显然比较麻烦。)

问题

不幸的是,pylint不喜欢这种解决方案。当代码工作时,lint认为sys.path修改是结束于“模块顶部”的代码块,并给出了不希望的wrong-import-position警告:

C: 6, 0: Import "from bar.eggs import Eggs" should be placed at the top of the module (wrong-import-position)
C: 7, 0: Import "from foo.ham …
Run Code Online (Sandbox Code Playgroud)

python conventions pylint python-import git-submodules

3
推荐指数
1
解决办法
4805
查看次数