Scrum report
其实算上今天01:11分开的Scrum和今天中午开的Scrum,今天一共进行了两次。终于觉得好多东西算是走上了一个正轨。晚上(应该是昨天的大半夜)再一次重新审视上一届留下的代码。首先存在着诸多问题。比如序列化的时候使用了多种格式。特别是在2进制序列化的时候,浪费了十分多的存储空间。另外,在单词表的存储方面,xml文件并没有格式化,当然,这在计算机读取的时候确实不存在问题,但是这在调试或者任何人工读取的时候都是基本不可读的。这应该是一个十分不好的习惯。另外,在很多代码的细节上,也有很多问题。比如单词本的存取路径居然是硬编码!?完全没有可扩展性了。然后Word类中的属性也写死了,一个单词只能有一种意思,这也是十分不现实的事情。另外,在建立新课程的时候,原作者采用的逻辑是,直接复制字典,比如如果我要进行乱序背诵,那么他就生成一个乱序的字典,也就是意味着我开多少个背单词的Course就要存多少个字典,而且还是物理修改?这浪费了多少空间!?!??!这些东西都是作者在一开始偷懒的结果,导致我们需要重新从顶层架构开始设计,包括很多细节的实现。中午的Scrum一共进行了2个多小时(参与人数从5人——4人——3人——2人)最后剩我(PM)和组长(技术大牛,Builder)在讨论了。
初步的架构在这。
1 class User{ 2 string UserName //用户名 3 string PassWord //密码 4 CourseCollection Courses; //课程信息 5 WordRememberList List; //单词 6 ExampleList ExampleList; 7 UserSetting Settings; //用户设置 8 } 9 10 class System 11 { 12 UserCollection Users //用户信息 13 BookCollection Books //图书信息 14 DictionaryCollection Dictionarys //字典信息 15 } 16 17 class DictionaryCollection:KeyedCollection<string,Dictionary> 18 { 19 DictFinder 20 void AddDictionaryLocation(IDictReader) //添加字典寻找器 21 } 22 23 24 class IDictFinder 25 { 26 IDictReader Reader; //读取器 27 List<Dictionary> ReadAllDict; //读取全部词典 28 } 29 30 interface IDictReader 31 { 32 Dictionay ReadDictionary(string path); //字典读取算法 33 } 34 35 36 class CourseCollection:KeyedCollection<string,Course> 37 { 38 CourseInfo CreateCourse(CourseBasicInfo info) 39 } 40 41 class CourseBasicInfo 42 { 43 WordOrder Order; //记忆顺序 44 BookName Name; //书名 45 int ListSize //单词表大小 46 } 47 class Course 48 { 49 Book Book; //书 50 User User; //用户 51 CourseBasicInfo Info; //基本信息 52 List<WordList> WordList 53 List<Dictionary> DictReference 54 Dictionary<string,Example> Example; 55 } 56 57 class WordWrapper 58 { 59 Word Word; 60 FlowDocument GetDocument() 61 LinkCollection Links; 62 string Word 63 string Pronounce 64 List<Meaning> Meanings; 65 string Remember; 66 string Derivation; 67 Course Parent 68 string Root; 69 } 70 class Word 71 { 72 string Word 73 string Pronounce //发音 74 List<Meaning> Meanings; //释义 75 string Remember; //记法,可空 76 string Derivation; //派生词 77 } 78 79 class Meaning 80 { 81 string Type 82 List<Example> Examples 83 List<string> Symnym; //同义 84 List<string> Antonym; //反义 85 } 86 87 Example 88 89 English 90 Chinese 91 Pronounce 92 93 94 class Book 95 List<Word> Words; 96 97 98 class BookRepository 99 100 class WordDict 101 102 103 class DictRepository 104 105 IDictReade