合同编程设计的最佳实践是什么?
在大学时我通过合同范式学习了设计(在OO环境中)我们已经学会了三种解决问题的方法:
1)总编程:涵盖所有可能的例外情况(参见数学)
2)名义编程:只有在满足前提条件时"承诺"正确的效果.(否则效果未定义)
3)防御性编程:使用异常来发出非法调用方法的信号
现在,我们已经集中在不同的OO场景中正确使用每种情况,但是我们还没有学会何时使用WHICH ...(主要是练习所强加的战术......)
现在我觉得我没有问过我的老师是非常奇怪的(但是在演讲期间,没有人问过)
就个人而言,我现在从不使用名义,并倾向于用异常替换前置条件(所以我宁愿使用:抛出IllegalDivisionByZero,而不是说'前提条件:分隔符应该与零不同)并且只有程序总数才有意义(因此我不会返回除以零的常规值,但这种方法只是基于个人发现和喜欢.
所以我问你们:
有没有最好的做法?
我创建了两个枚举,我知道它们不一样,但我认为它们是相同的,因为它们的字符串表示以及它们的数字表示相等(甚至相同......).
换句话说:我希望第一个测试通过,第二个测试失败.但实际上,它们都失败了.那么:C#中的两个枚举何时相等?或者无论如何在C#中定义equals运算符?
谢谢!
public enum enumA {one, two}
public enum enumB {one, two}
[Test]
public void PreTest()
{
Assert.AreEqual(enumA.one,enumB.one);
Assert.AreSame(enumA.one, enumB.one);
}
Run Code Online (Sandbox Code Playgroud)
更新:1)所以到目前为止所有答案都比较表示,无论是整数还是字符串.enum 本身总是不平等的我聚集在一起?没有办法为它定义平等吗?
我正在研究算法并决定将Java程序从教科书移植到Python,因为我不喜欢Java开销,特别是对于小程序,以及作为练习.
算法本身非常简单,它只是以一种强大的方式从阵列中取出所有三元组,并计算有多少三元组总和为零(例如:[ - 2,7,-5])
public static int count(int[] a) {
int N = a.length;
int cnt = 0;
for (int i = 0; i < N; i++) {
for (int j = i+1; j < N; j++) {
for (int k = j+1; k < N; k++) {
if (a[i] + a[j] + a[k] == 0) {
cnt++;
}
}
}
}
return cnt;
}
Run Code Online (Sandbox Code Playgroud)
我把它移植到:
def count(a):
cnt = 0
ln = len(a)
for i in xrange(0,ln):
for j …Run Code Online (Sandbox Code Playgroud) 在制作简单的本机反应程序时,我无法使<Button> 组件工作.我经常遇到的错误react-native run-android是
java.lang.String无法强制转换为com.facebook.react.uimanager.AccessibilityDelegateUtil $ AccessibilityRole
当我省略按钮时,一切正常,我可以单击文本就好了.
代码:
import React, {Component} from 'react';
import {Platform, StyleSheet, Text, View, Button } from 'react-native';
type Props = {};
export default class App extends Component<Props> {
render() {
return (
<View style={styles.container}>
<Button onPress={()=>console.log('hi')} title="go"/>
<Text onPress={()=>console.log('hi')}>Welcome to React Native!</Text>
</View>
);
}
}
Run Code Online (Sandbox Code Playgroud)
一些依赖:
"dependencies": {
maar eens alles goed staat hoop ik gewoon dat de miserie gedaan is, cf "react": "16.6.0-alpha.8af6728",
"react-native": "0.57.3"
},
Run Code Online (Sandbox Code Playgroud) 我按下任何按钮时,我写了一个小节目,在屏幕上显示声音和图像.当我的一个小孩爬到我的膝盖上然后开始按键时,我总是开始它,当然是随机的.
它工作正常,除了2个键,其中一个是ON/OFF开关,另一个是Windows键.(CTRL-ESC相当于我相信)我可以在按下它时拦截它,但只有在startmenu显示之后.
我使用的事件是UIElement.KeyDown,到目前为止我能想到的是:( e是KeyEventArgs)
if (e.Key == Key.LWin) e.Handled = true;
Run Code Online (Sandbox Code Playgroud)
但是起步窗口已经显示出我害怕了.
我已经有1个回答,但非常想知道是否有任何wpf支持?
我怀疑编程主开/关开关可能不可能?否则,任何帮助也会受到欢迎..
是否有针对lisp的PEAR类库?我希望有,但我在某处读到lisp的一个缺点是它缺乏严肃的库.我觉得很难相信因为现在已经有半个世纪了.
所以我想将链接表复制到MS Access 2003中的代码,结构和数据中的本地表.
代码是:VBA或C#.或其他任何事情..
更新:我希望ms访问的复制结构和数据行为保留主键.如果复制链接表,则可以选择将其粘贴为"结构和数据(本地表)"这是我想要在代码中实现的.
我想使用内置功能或免费库在F#中做一些基本的图表.如果可能的话,我会非常满意它的一个非常基本的例子,一个饼图.
示例数据:
[("John",34);("Sara",30);("Will",20);("Maria",16)]
Run Code Online (Sandbox Code Playgroud)
其中int是要在馅饼中表示的百分比.
我最近安装了VSLab,虽然我发现了很多3D示例,但我只是在寻找一个简单的饼图......
顺便使用excel功能也很好,不是免费的,但是安装了..
c# ×2
f# ×2
charts ×1
clipboard ×1
common-lisp ×1
enums ×1
equality ×1
java ×1
keyboard ×1
lisp ×1
ms-access ×1
performance ×1
python ×1
react-native ×1
wpf ×1