写点什么

抄作业

用户头像
escray
关注
发布于: 2020 年 05 月 13 日
抄作业

2020-05-10


今天在补前两天训练营的课,结果看到 @熊节 大大的一篇文章,就忍不住去去把知乎上的专栏都看了一遍。


回过头来,看了一下 熊大 分享的软件是写给谁用的截图,即使是 Args 这样一个功能相对简单的程序也需要考虑谁用,怎么用之类的问题。


没有真实的用户,可以假设,是另一个或多个程序员调用,而是用的方法就是导入 jar 包。


今日任务:


  1. 任务 3:Part I:Schema

  2. 开发 Schema 输入和解析的逻辑


看到提示,我才意识到原来在初始需求的部分,题目就说明了要开发的是一个解析器 parser,并且需要一个参数结构 schema,所以我一直好奇,其他同学是怎么知道一上来就需要一个 shcema 呢。


schema 描述程序接受那些参数,包括有标记的类型、数量和缺省值。


我还真是连需求都没整清楚,就开始写程序了。


// SchemaTest01.java import org.junit.jupiter.api.Test;import static org.junit.jupiter.api.Assertions.assertEquals;
public class Schema01Test { @Test void should_return_boolean_if_schema_flag_is_l() { assertEquals(Boolean.TRUE, new Schema01("l:bool").getValue("l", "true")); assertEquals(Boolean.FALSE, new Schema01("l:bool").getValue("l", "false")); assertEquals(Boolean.FALSE, new Schema01("l:bool").getValue("l", "")); }
@Test void should_return_integer_if_schema_flag_is_p() { assertEquals(1, new Schema01("p:int").getValue("p", "1")); assertEquals(0, new Schema01("p:int").getValue("p", "")); assertEquals(-1, new Schema01("p:int").getValue("p", "-1")); }
@Test void should_return_string_if_schema_flag_is_d() { assertEquals("/usr/local", new Schema01("d:sting").getValue("d", "/usr/local")); assertEquals("", new Schema01("d:sting").getValue("d", "")); }}
// Schema01.javapublic class Schema01 { public Schema01(String config) {
}
public Object getValue(String flag, String value) { if (flag == "l") { if (value == "true") { return Boolean.TRUE; } return Boolean.FALSE; } if (flag == "p") { if (value.isEmpty()) { return 0; } return Integer.parseInt(value); } return value; }}
复制代码


之前看过一次视频演示,在某种程度上“抄作业”,所以 Schema 的测试能写出一个大概的模样,但是对于 Schema 实现部分的重构,我就有点功力不足了。


代码的问题大致有两个,一个是构造函数里面的参数 config 没有用到,第二个是 getValue 里面的 if 嵌套太多,加上硬编码。


发布于: 2020 年 05 月 13 日阅读数: 48
用户头像

escray

关注

Let's Go 2017.11.19 加入

在学 Elasticsearch 的项目经理

评论 (1 条评论)

发布
用户头像
建议重新修改下标题,更吸引大家点击~
2020 年 05 月 13 日 11:06
回复
没有更多了
抄作业