.NET中的DRY和SHY原则

.NET中的DRY和SHY原则,第1张

定义

DRY原则DRY——Don t Repeat Yourself 是指在一个项目工程中的东西最好是唯一的 所有东西 包括类 变量 常量 相同的方法 等等

SHY原则Shy—害羞 是指各个模块不要把只属于自己的东西公开 从而减少依赖关系 假如出现bug 那么让bug只影响该某块 而不要牵扯整个工程

联系

两个原则都为了增强程序可维护性 但是在某种程度上两个是不能兼得的 DRY原则 要尽量把各部分里相同的东西分离出去放在一起 这难免就会导致很多部分都和分离出来的这些东西存在一些关系 从而不够Shy 想要一个系统够Shy 就得努力让各部分都做得和其它部分没有什么关联 这就会致使每个部分里面都有一些本来可以共同使用的内容 从而不够DRY

lishixinzhi/Article/program/net/201311/13004

//以下为原创答案和测试结果图。

#include <stdio.h>

#include <math.h>

double LONG(double a[],double b[])

void main()

{

double a[4],b[4],c[4],d[4],x1[4],x2[4]

printf("请逆时针输入四点的横坐标\n")

printf("请先输入根号下的数,若没有输入0,再输入空格(重要),再输入分数位,再输入空格,\n")

printf("再输入分母,没有分母输入1,最后然后回车,接着输入下一个点的横坐标\n")

scanf("%lf %lf %lf",&a[0],&c[0],&d[0])x1[0]=sqrt(a[0])+c[0]/d[0]

scanf("%lf %lf %lf",&a[1],&c[1],&d[1])x1[1]=sqrt(a[1])+c[1]/d[1]

scanf("%lf %lf %lf",&a[2],&c[2],&d[2])x1[2]=sqrt(a[2])+c[2]/d[2]

  scanf("%lf %lf %lf",&a[3],&c[3],&d[3])x1[3]=sqrt(a[3])+c[3]/d[3]

  printf("请逆时针输入四点的纵坐标\n")

  scanf("%lf %lf %lf",&b[0],&c[0],&d[0])x2[0]=sqrt(b[0])+c[0]/d[0]

scanf("%lf %lf %lf",&b[1],&c[1],&d[1])x2[1]=sqrt(b[1])+c[1]/d[1]

scanf("%lf %lf %lf",&b[2],&c[2],&d[2])x2[2]=sqrt(b[2])+c[2]/d[2]

  scanf("%lf %lf %lf",&b[3],&c[3],&d[3])x2[3]=sqrt(b[3])+c[3]/d[3]

if (LONG(x1,x2)==1)

printf("四个顶点坐标构成了一个等边四边形\n")

else

printf("四个顶点坐标没有构成等边四边形\n")

}

double LONG(double x1[],double x2[])

{

double l1,l2,l3,l4,n

n=0

l1=(x1[0]-x1[1])*(x1[0]-x1[1])+(x2[0]-x2[1])*(x2[0]-x2[1])

l2=(x1[1]-x1[2])*(x1[1]-x1[2])+(x2[1]-x2[2])*(x2[1]-x2[2])

  l3=(x1[2]-x1[3])*(x1[2]-x1[3])+(x2[2]-x2[3])*(x2[2]-x2[3])

l4=(x1[3]-x1[0])*(x1[3]-x1[0])+(x2[3]-x2[0])*(x2[3]-x2[0])

if (l1==0)

printf("数据有误")

if (l1==l2)

n=n+1

else

n=n

if (l2==l3)

n=n+1

else

n=n

if (l3==l4)

n=n+1

else

n=n

if (l4==l1)

n=n+1

else

n=n

if  (n==4)

return 1

else

return 0

}

但若将上面那个点横坐标改为0.5,就不是正方形了,如图。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11547828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存