- 博客(6)
- 收藏
- 关注
原创 面向正确性与健壮性的软件构造
首先Exception和Error都是继承自Throwable类的,其中Exception又分为 RuntimeException和其它,单独分出RuntimeException的原因是RuntimeException比较特殊,运行时异常,是程序源代码中引入的故障所造成的,如果在代码中提前进行验证,这些故障就可以避免;注: Unchecked异常也可以使用throws声明或try/catch进行捕获,但大多数时候是不需要的,也不应该这么做,是掩耳盗铃,对发现的编程错误充耳不闻的行为。
2024-06-26 11:30:00
749
原创 软件构造总结---ADT
(4) 做出具体的解释:每个rep value如何映射到abstract value,而且要把这种选择和解释明确写到代码当中,以注释的形式(注意,不能以规约的形式,因为规约是可以暴露给客户端的,如果把RI和AF暴露给客户端,这也是一种表示泄露);我们称类中的具体属性为该抽象数据类型的表示,表示独立性的核心含义就是要达到使用效果与表示相独立,互不依赖。我们可以将一个程序抽象成一个由实现者看到和使用的值R到使用者看到和使用的值A的一个映射:AF : R → A,其中R叫作表示空间,A叫作抽象空间。
2024-06-26 09:45:00
664
原创 面向可维护性的构造技术
▪ (OCP) The Open-Closed Principle 开放-封闭原则:模块的 行为应是可扩展的,从而该模块可表现出新的行为以满足需求的变化,但模块自身的代码是不应被修改的。评价可维护性的指标,可以使用圈复杂度、代码行数、继承的层次数、类之间的耦合度、单元测试的覆盖度等,简单来讲就是代码的复杂程度。3.尽可能小的接口:如果两个模块通讯,那么它们应交换尽可能少的信息。不需要的接口:只提供必需的接口,不应该使接口太“胖”2.尽可能少的接口:模块应尽可能少的与其他模块通讯。
2024-06-26 08:15:00
530
原创 数据类型和类型检验
举例,如果返回的是可变类型,一旦在后续处理中发生了不期望的更改,这种错误是非常难以检查的。1.对于不可变类型,由于不可改变值或引用,每次想要更改值或值的时候,就需要做大量的临时拷贝,造成内存和时间的浪费。可以使用final来修饰一个对象,这样对象的引用不可以改变,但引用的对象内部可以改变。如果是引用类型,也可以是不变的:一旦确定其指向的对象,不能再被改变指向其他对象。引用是不可变的,但指向的值却可以是可变的;首先要知道的是,Java是一门静态语言,类似于C语言,动态语言的典型代表是Python。
2024-06-25 23:15:49
284
原创 软件构造总结
(Integer.MIN_VALUE,Integer.MAX_VALUE) 覆盖 a < b,a = minint,b = maxint。- (Integer.MAX_VALUE,Integer.MIN_VALUE) 覆盖 a > b,a = maxint,b = minint。修复错误后,把错误样例输入自动化测试中,是回归测试。- (0,0) 涵盖 a = b,a = 0,b = 0。- (-1,-3) 覆盖 a> b,a <0,b <0。- (1,2) 覆盖 a <b,a> 0,b> 0。
2024-06-20 10:58:26
840
原创 HIT-ICS2024大作业
P2P(预处理、编译、汇编、链接):在Ubuntu的终端输入命令gcc -m64 -Og -no-pie -fno-PIC hello.c -o hello。hello.c将通过如下图示的过程,转化为可执行程序hello。图1.1hello执行时将通过调用fork函数为其创建子进程完成预处理、编译、汇编、链接的过程,即From Program to Process。
2024-06-12 19:47:55
355
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人