问题标签 [convention-over-configur]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
406 浏览

c++ - cmake 是否使用约定而不是配置?

据说 Maven采用了Convention over Configuration的一种形式。

我不想进行任何错误的比较,但据我了解,cmake可以为 C++ 项目填充类似的内容,就像 maven 可以为 Java 项目填充一样。

那么, cmake是否有一些优于配置的约定,或者每个项目的配置是否唯一?(Wrt. 文件布局、测试布局、构建输出等)

0 投票
1 回答
1400 浏览

caliburn.micro - 如何使用 Caliburn.Micro 约定来设置按钮的文本及其操作?

如果我的视图中有一个名为 Save 的按钮,那么我可以将 Save 属性添加到我的 ViewModel,Caliburn.Micro 会自动将它绑定到我的按钮内容。例如:

或者我可以向我的 ViewModel 添加一个 Save 方法,当单击按钮时,Caliburn.Micro 将执行该方法。例如:

但是如果我想两者都做呢?C# 不允许我声明具有相同名称的方法和属性。我可以使用约定来设置按钮的内容和单击时要执行的操作吗?

(我知道我可以手动绑定其中一个,但如果可行的话,我宁愿使用约定。)

这是一个常见的需求,所以您会认为它会内置在 Caliburn.Micro 中,但似乎并非如此。我已经看到了一些扩展约定以支持这一点的代码(如果没有更好的情况出现,我会将其作为答案发布),但这是一个带有一些奇怪怪癖的解决方法——所以我想听听是否还有其他人使这项工作更加干净。

注意:我确实看到了这个类似的问题,但这似乎是关于这是否是一个好主意;我问的是机制。(在我看到机制之前,我会保留判断这是否是一个好主意。(笑))

0 投票
0 回答
262 浏览

repository-pattern - 装饰器模式的 StructureMap 注册约定

我正在使用装饰器模式为我的存储库实现缓存,如下所示:

Cached 存储库检查所请求对象的缓存,如果它不存在,则调用 FooRepository 来检索和存储它。我目前正在使用以下方法向 StructureMap 注册这些类型:

这很好用,但是随着缓存存储库数量的增加,单独注册每个存储库变得笨拙并且容易出错。看到我有一个共同的约定,我正在尝试使用自定义 IRegistrationConvention 扫描我的程序集,但我似乎无法弄清楚如何将 FooRepository 传递给函数中 CachedFooRepository 的构造void Process(Type type, Registry registry)函数。

我找到了一些例子来做类似的事情:

或者

但是这两种方法都不允许我链接.Ctor. 我错过了什么?有任何想法吗?

0 投票
3 回答
2636 浏览

ruby-on-rails - 在 Rails 中,您将 Sweepers 放在哪里?

Rails 中是否有将Sweeper类放在特定目录位置的约定?

更新:由于观察员被放入app/models,我假设清扫器没有什么不同,只要名称总是以“清扫器”结尾。

0 投票
1 回答
96 浏览

c# - 框架约定的静态检查

是否有产品/项目允许您定义约定,例如 MVC 项目,以静态检查命名约定,如控制器被附加在从控制器继承的类的末尾和/或在装饰方法时强制执行某个方法签名一个属性。

我基本上是在寻找一种方法来为加入我们团队的新开发人员设置一些护栏,我们有一套明确的约定,其中一些用于通过反射动态连接事物。看到由于签名不兼容而导致反射连接失败,这对我们的加速过程来说是一个巨大的福音。

需要的主要功能:

  • 静态/编译时间检查违反规则
  • 能够定位具有特定属性的方法(通过 RegEx 或向导)
  • 基于不同类型项目的不同规则集。(示例:MVC 应用程序的一组约定,Web 窗体应用程序的一组不同的约定,以及后缀为 .BLL 的类库的一组不同的约定)

尽管我要求您仅在知道支持这些功能时才回复任何输入建议。

0 投票
2 回答
3164 浏览

c# - FluentNhibernate 自定义主键自动映射 - (dis)allow nulls

如果这是可空和不可空数据库字段的硬编码映射方式

自动映射和约定是如何完成的?

此外,这并不明显,但我需要它的目的是让 nhibernate 在不使用主键字段的情况下生成插入 sql 语句。

示例:如果我希望数据库生成 ProductId,而不是

NHibernate 应该生成

而且,rdbms 在这里不应该是一个问题,因为客户端代码不应该关心数据库如何分配它。

0 投票
4 回答
566 浏览

ruby-on-rails - Ruby on Rails 命令和约定——它们是什么?

我已经用 PHP 和 MySQL 制作网站近十年了,但我从未使用过框架。这意味着我已经对所有内容进行了手工编码,并且我知道代码如何工作以及如何与自身交互。

为了扩大我的视野,我选择了 Ruby on Rails 来学习另一种 Web 语言、框架、DB 等。我一直在关注 Ruby on Rails 教程,到目前为止进展顺利,但有什么困扰我的呢?感觉。有太多的魔法,事情发生只是因为它确实。这个“魔法”的例子包括,如果我突然添加到路由文件“resources:users”我有几乎无限可能的链接,如 /new /user/1 /user/1/edit 等。或者如果我想在我的数据库表中添加一列我必须在控制台“rails integration _to_table value:type”中执行类似的操作,然后我必须“rake”数据库。

我已经能够按照教程制作东西,但我不明白我在做什么。我知道其中一部分将来自经验,但我想知道 Rails 是如何以及为什么这样做的。

有哪些好的资源、在线资源和书籍,我可以在其中了解 RoR 的工作原理?

0 投票
2 回答
542 浏览

asp.net-mvc - 何时在“约定优于配置”中添加新文件夹?

我有两个问题,真的。

我看到人们在他们的项目中添加了一个 Services 文件夹。那个文件夹的目的是什么?

我看到了 Services 和 ViewModels 的文件夹。现在我遇到了一篇关于存储库的文章。那么,每次我有新用途的类时,我都应该为它们创建一个文件夹吗?例如,如果我有一个 Repository 类,那么我应该创建一个 Repository 文件夹并将它们放在那里而不是 Models 文件夹?

0 投票
3 回答
1316 浏览

c# - 实体框架代码优先约定优于配置应该是相反的方式

为什么 MS 决定使用约定而不是配置。

我处理非常大的项目,并非所有项目都以数据为中心。事实上,即使是以数据为中心的项目,我的实体类也有很多需要与持久性无关的自定义功能。

使用当前的 MSM 方法,我最终不得不将属性应用于非持久性属性,而不是相反。这不应该是代码优先的重点吗?使用工作类层次结构并将其作为“附加”转变为持久性兼容?

我了解某些约定非常有用,例如身份或主键属性和外键的命名。但老实说,如果他们还没有类结构,告诉我有多少开发人员会使用代码优先而不是模型优先???

0 投票
1 回答
1252 浏览

fluent-nhibernate - Fluent NHibernate 自动映射类约定未应用于整个类层次结构

我正在尝试使用 Fluent Nhibernate 自动映射一个简单的继承层次结构,并且我需要为每个表使用与其类稍有不同的名称(下划线而不是 Pascal 大小写)。这似乎是一个使用约定的明显地方。我也想使用 table-per-subclass 策略,但这种组合似乎给我带来了一个问题:该约定仅适用于层次结构的基类。

这是我的自动映射:

我希望我的类如何映射(类名-> 表名):

我实际得到的是:

如您所见,实际上只更改了基类。这是我现有的约定,以便您可以看到我是如何定义它的:

我还查看了ISubclassConvention界面,并且看不到那里可以调整表的名称(这很有意义,子类并不总是在它们自己的表中)。

如果我从我的自动映射中删除该IncludeBase行,名称就会变成我想要的,除了它变成每个具体类的表。我想使用每个子类的表,将所有公共数据留在一个共享基表中。

我可以为每个名称添加覆盖,如果必须,我会添加,但我宁愿不这样做。

看起来这应该是一个明显受支持的行为。如何将命名约定应用于层次结构中的每个表,而无需逐个具体类进行表?