以下是实现此目标的典型方法:
public void myContractualMethod(final String x, final Set<String> y) {
if ((x == null) || (x.isEmpty())) {
throw new IllegalArgumentException("x cannot be null or empty");
}
if (y == null) {
throw new IllegalArgumentException("y cannot be null");
}
// Now I can actually start writing purposeful
// code to accomplish the goal of this method
Run Code Online (Sandbox Code Playgroud)
我认为这个解决方案很难看.您的方法很快就会填充样板代码来检查有效的输入参数契约,从而模糊了方法的核心.
这是我想要的:
public void myContractualMethod(@NotNull @NotEmpty final String x, @NotNull final Set<String> y) {
// Now I have a clean method body that isn't obscured …Run Code Online (Sandbox Code Playgroud) 我有一个wcf服务,在单个端点地址上公开了大量的服务方法.到目前为止,所有服务方法都在单个服务合同类中实现.此服务契约类实现了多个服务契约接口.现在我想将服务契约方法的实现分成几个类,以避免契约类增长到大.我使用ServiceHost的自托管方案.ServiceHost只采用实现服务方法的单一类型的类型,因此似乎必须在此类中实现所有内容.当然,方法的肉可以分解为几个类.但是还有一种方法可以将方法分成几个类吗?
我一直想知道SRS文件与两家公司签订的官方合同的关系(一个是软件项目,另一个是客户).
SRS文件是否必须在签订合同之前或之后签署?它是否是一份b2b关系中的两个合作伙伴可以用作合同的官方文件?
问题:如何跨文件拆分swagger定义?那个地区有什么可能性?问题详情如下:
我确实有RAML的经验,我的工作是,例如:
/settings:
description: |
This resource defines application & components configuration
get:
is: [ includingCustomHeaders ]
description: |
Fetch entire configuration
responses:
200:
body:
example: !include samples/settings.json
schema: !include schemas/settings.json
Run Code Online (Sandbox Code Playgroud)
最后两行在这里非常重要!include <filepath>- 在RAML中有- 我可以将我的整个合同拆分成许多文件,这些文件只是由RAML解析器动态包含(并且所有基于RAML的工具都使用RAML解析器).
我的好处是:
据我所知,swagger支持$ref允许加载外部文件的关键字.但是这些文件是通过HTTP/AJAX获取的还是只是本地文件?
并且是整个规范支持还是只是一些支持它的工具,而有些工具不支持它?
我在这里发现,swagger的输入必须是一个文件.这对大型项目来说非常不方便:
或者,换句话说,我可以用摇摆乐来实现同样的目标 - 我可以用RAML - 在分割文件方面吗?
情况
我需要覆盖equals(),因为我建议我也hashCode()使用相同的字段覆盖该方法.然后,当我看着一个只包含一个对象的集合时,我得到了令人沮丧的结果
set.contains(object)
=> false
Run Code Online (Sandbox Code Playgroud)
而
set.stream().findFirst().get().equals(object)
=> true
Run Code Online (Sandbox Code Playgroud)
我现在明白了,这是由于object在添加后set再次更改其hashCode 所做的更改.contains然后查看错误的密钥,找不到object.
我对实施的要求是
equals()Collections或Maps灰尘HashSet.这违反了惯例
equals()并且hashCode()应该使用相同的字段以避免意外(如此处所述:https://stackoverflow.com/a/22827702).题
是否存在使用仅用于equals()计算hashCode()而不是全部使用的字段子集的危险?
更具体而言,这将意味着:equals()使用大量的物体的领域的,而hashCode()仅使用在所使用的那些字段equals()和是不可变的.
我认为这应该没问题,因为
HashSet在这些更改之前和之后找到.相关帖子帮助我理解了我的问题,但没有解决方法:在Java中覆盖equals和hashCode时应该考虑哪些问题?和equals和hashcode的不同字段
我正在使用 pactNet 来测试一个 API,它应该返回一个灵活长度的数组。
如果我调用“myApi/items/”,它应该返回一个消费者不知道确切尺寸的项目列表。所以答案应该是这样的:
[
{
"id": "1",
"description": "foo"
},
{
"id": "2",
"description": "foo2"
},
{
"id": "3",
"description": "foo3"
}
]
Run Code Online (Sandbox Code Playgroud)
或这个:
[
{
"id": "4",
"description": "foo4"
},
{
"id": "2",
"description": "foo2"
}
]
Run Code Online (Sandbox Code Playgroud)
如何为此交互创建合同?
在文档是在Ruby中的例子,但是我无法找到C#中的等价物。
我正在使用 pactNet 2.1.1 版。
编辑:这是一个示例,它应该是什么样子。我想知道的是如何声明主体应该包含一个长度灵活的项目数组。
[Test]
public void GetAllItems()
{
//Arrange
_mockProviderService
.Given("There are items")
.UponReceiving("A GET request to retrieve the items")
.With(new ProviderServiceRequest
{
Method = HttpVerb.Get,
Path = "/items/",
Headers = new Dictionary<string, object> …Run Code Online (Sandbox Code Playgroud) Summary: Do I need to accept the "Paid Applications" contract from Apple on iTunesConnect to update my free apps? If not, what are the steps I should follow to update my free app?
Details:
I'm trying to update a free app. I login to iTunes Connect and Apple show me this message:
I am the Team Agent, so I go to the 'Agreements, Tax, and Banking' section and I see:
我想对某个函数的参数签定合同,以强制参数对象必须具有特定的属性。我了解python不是严格类型的语言,但是有时具有合同和接口非常有用。Python现在具有类型提示,这很好,因此我们可以这样做:
def myfunc(myparam: MyType) -> SomeType:
myparam.myprop # this should exist
Run Code Online (Sandbox Code Playgroud)
但是,如何说MyType必须具有特定的对象属性(myprop),而又不能在运行时插入断言和引发异常?我可以用abc元类定义抽象类,该类可以用作接口。
from abc import ABC, abstractmethod
class MyInterface(ABC):
@property
@abstractmethod
def myprop(self) -> int: pass
Run Code Online (Sandbox Code Playgroud)
现在在代码中的某个地方,我可以将MyType定义为:
class MyType(MyInterface):
myprop = 8
Run Code Online (Sandbox Code Playgroud)
它正在工作,但是 myprop是类属性,而不是对象属性(属性)。我当然可以这样做:
class MyType(MyInterface):
myprop = 0
def __init__(self):
self.myprop = 8
Run Code Online (Sandbox Code Playgroud)
很好,但是我必须定义一个(不必要的)类(“静态”)属性,并使用对象属性有效地将其隐藏。不太干净。而且现在我有一个myprop的默认值,这不是我想要的。但是,如果我这样做:
class MyType(MyInterface):
myprop = None # wrong type here
def __init__(self):
self.myprop = 8
Run Code Online (Sandbox Code Playgroud)
这是错误的,因为myprop 必须为 int且不能为None,这是由linter 正确捕获的。应该有一个没有类属性的对象属性。
目标是像mypy这样的静态检查器可以捕获实现错误,其中类不遵循已定义的接口或协定,而该协定或协定要求参数实例必须具有某些属性。
什么是pythonic(或不是pythonic)的实现方式?
据说在2019年的JetBrains开放日,Kotlin团队研究了合同并试图实现上下文合同,该合同仅允许在某些情况下调用函数,例如,build仅在setName方法调用前被调用了一次的情况下才允许调用函数。这是一段谈话录音。
我尝试使用当前可用的Kotlin功能模拟此类合同,以为创建null安全构建器data class Person(val name: String, val age: Int)。
注意:当然,在这种情况下,使用命名参数而不是生成器模式要容易得多,但是命名参数不允许将未完全构建的对象解析为其他函数,并且在创建时很难使用它们由其他复杂对象等组成的复杂对象。
所以这是我的null安全构建器实现:
基于通用标志的构建器
sealed class Flag {
object ON : Flag()
object OFF : Flag()
}
class PersonBuilder<NAME : Flag, AGE : Flag> private constructor() {
var _name: String? = null
var _age: Int? = null
companion object {
operator fun invoke() = PersonBuilder<OFF, OFF>()
}
}
val PersonBuilder<ON, *>.name get() = _name!!
val PersonBuilder<*, ON>.age get() = _age!!
fun <AGE …Run Code Online (Sandbox Code Playgroud) 我刚刚加入 Solana 链上计划。我要做一个判断正面或背面的硬币游戏。我尝试使用 std:: rand 和 get_random 板条箱,但它们不起作用。如果您有这方面的经验,请告诉我。
我使用 Solana 链上程序的锚点。
contract ×10
java ×2
annotations ×1
api ×1
b2b ×1
blockchain ×1
c# ×1
consumer ×1
endpoint ×1
equals ×1
generics ×1
hashcode ×1
interface ×1
ios ×1
kotlin ×1
overriding ×1
pact ×1
pact-net ×1
python ×1
python-3.x ×1
raml ×1
random ×1
requirements ×1
rest ×1
service ×1
solana ×1
swagger ×1
validation ×1
wcf ×1