发现将某些法条改成伪代码感觉可以提高可读性(也有可能并没有增加可读性,只是更加习惯而已)。 同时,改写的过程中也能发现一些含糊的地方 (其中包括法条本身表述不明确及表述明确但自己没理解两种情况)。
比如,用伪代码表达诉讼时效:
class 民事权利 {
private Period 诉讼时效;
private Period 完整诉讼时效;
LocalDate 知道或应当知道被侵权;
LocalDate 被侵权;
boolean 当事人自愿履行;
public 民事权利(LocalDate 知道, LocalDate 被侵, boolean 自愿) {
this.完整诉讼时效 = Period.ofYears(2);
this.诉讼时效 = this.完整诉讼时效;
this.知道或应当知道被侵权 = 知道;
this.被侵权 = 被侵;
this.当事人自愿履行 = 自愿;
}
public Period get 诉讼时效() {
return this.诉讼时效;
}
public void set 诉讼时效(Period p) {
this.诉讼时效 = p;
}
public boolean is 有效期内() {
if (当事人自愿履行) {
return true;
}
else {
// 民法通则 s. 137 规定有特殊情况的,人民法院可以延期。
// 实际诉讼中这个一般要援引司法解释具体 patch 的情况才能延期。
// 因此下面不考虑这个情况。
LocalDate today = LocalDate.now();
// 1988 年最高法关于执行通则的意见明确了 20 年期限不适用中止、中断的规定。(s. 175)
if (Period.between(被侵权, today) > Period.ofYears(20)) {
return false;
} else if (Period.between(知道或应当知道被侵权, today) > this.诉讼时效) {
return false;
} else {
return true;
}
}
}
public boolean 中止(boolean 因不可抗力或其他障碍无法行使请求权,
LocalDate 中止原因消除) {
if (因不可抗力或其他障碍无法行使请求权) {
if (诉讼时效 <= Period.ofMonths(6)) {
Period 中止期间 = Period.between(LocalDate.now(), 中止原因消除);
this.诉讼时效 += 中止期间;
return true;
} else {
return false;
}
} else {
return false;
}
}
public boolean 中断(boolean 提起诉讼, boolean 提出要求, boolean 同意履行) {
if (提起诉讼 || 提出要求 || 同意履行) {
this.诉讼时效 += this.完整诉讼时效;
return true;
} else {
return false;
}
}
}
class 身体伤害 extends 民事权利 {
public 身体伤害(LocalDate 知道, LocalDate 被侵, boolean 自愿) {
super(知道,被侵,自愿);
this.完整诉讼时效 = Period.ofYears(1);
this.诉讼时效 = this.完整诉讼时效;
}
}
// 同理可定义 `class 质量不合格商品`, `class 延付拒付租金`, `class 寄存财物丢失损毁`,
// 此处省略。
abstract class 另有规定 extends 民事权利 {
@Override public boolean is 有效期内();
}
以上伪代码摘自 写给 Programmer 的法律入门指引
注意:v2ex 强行在中文和英文之间加空格,code block 里也不放过,所以上面有些空格请自行脑补去除。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.