第三次作业—结对编程

Github地址:  
结对伙伴作业地址:  
我的博客地址: https://www.cnblogs.com/gaojunlong/
作业地址: https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass1/homework/2882

1、非摆拍照片。

2、PSP表格。

 

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30  30

· Estimate

· 估计这个任务需要多少时间

60   50

Development

开发

300   400

· Analysis

· 需求分析 (包括学习新技术)

60   70

· Design Spec

· 生成设计文档

 30  40

· Design Review

· 设计复审 (和同事审核设计文档)

 60  90

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

30  10

· Design

· 具体设计

 60  50

· Coding

· 具体编码

 300  240

· Code Review

· 代码复审

 120  100

· Test

· 测试(自我测试,修改代码,提交修改)

 60  70

Reporting

报告

 120  100

· Test Report

· 测试报告

 60  60

· Size Measurement

· 计算工作量

 60  50

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

30  20
 

合计

 960 1230

3、解题思路描述。

  刚开始看到问题时,有点懵,不知道从哪儿开始下手,但是在仔细阅读博客作业要求以后,对作业有了大概的了解,然后就顺着了解地大概,在百度上面深入地了解了一些相关的知识,虽然面临的问题还是很大,都是一些没有接触过得知识点,只是花费的时间要更多一些。

4、代码说明。展示出项目关键代码,并解释思路与注释说明。

charactor类(统计字符数):

public class charactor
    {
        public static void charactor(string in_Path,string out_Path)
        {
            int count = 0;
            int number = 0;
            int[] count1 = new int[2];//用于统计字符串的字符数及行数
            try
            {
                FileStream file = new FileStream(in_Path, FileMode.Open);
                StreamReader streamreader = new StreamReader(file);
                string readLine = null;
                while ((readLine = streamreader.ReadLine()) != null)
                {
                    countChar += readLine.Length;
                    number++;
                }
                count[0] = count;
                count[1] = number;
                streamreader.Close();
            }
            catch(Exception e)
            {
                Console.WriteLine(e.Message.ToString());
            }
            try
            {
                FileStream wFile = new FileStream(out_Path, FileMode.Create);
                StreamWriter sr = new StreamWriter(wFile);
                sr.WriteLine("characters: {0}", count[0]);
                sr.WriteLine("lines: {0}", count[1]);
                sr.Close();
            }
            catch (Exception a)
            {
                Console.WriteLine(a.Message.ToString());
            }
        }
    }
public void Word_lines()//统计有效行数
        {
            int count=0;
            string[] path = File.ReadAllLines(wordcount, System.Text.Encoding.Default);
            count = path.Length;
            string number1, number2;
            number1 = "lines: ";            
            Console.WriteLine(number1+count);
            number2= Convert.ToString(count);
            number1 = number1 + number2;
            StreamWriter sw = new StreamWriter(wordcount, true);
            sw.WriteLine(number1);
            sw.Close();
        }

  

 Main主函数:

static void Main(string[] args)
        {

            string wordcount = @"c:\user\desktor\wordcount.txt";
            Word number1 = new Word(wordcount);
            if (File.Exists(wordcount))
            {
                number1.Word_charactor();//在Word类中的函数,用于统计字符数
                number1.Word._words();//统计单词总数
                number1.Word_lines();//统计有效行数
            }
            Console.WriteLine();
            Console.ReadKey();
        }

5、给出你们制定的代码规范或链接,记录你们代码互审的情况,审查的模块名、发现的问题等。

代码规范:

(一)、代码风格规范

(1)、缩进。

  通过和结对成员的讨论,在缩进中采用的是缩进4个空格,这也是在VS中比较常见的,而且整体的代码篇幅 也比较赏心悦目,可读性也很好。

(2)、行宽及括号。

  行宽的话我们设定的是100字符,这也是相对来说比较好的;括号的话就是来清楚地表示逻辑的优先级,特别是在条件语句的运用上是必不可少的,也是按照个人的习惯来决定。

(3)、断行和分行

    断行:在条件语句中,使用的是以下的代码格式,使代码更加地清晰明了,更加直观。

1 if(condition1)
2 {
3      DoSomething();
4 }
5 else
6 {
7     DoSomethingElse();
8 }

  分行:在定义变量时,一行只放入一个语句,不把多条语句放在一行,逻辑清晰。

int a=1;
string path="A_Za_z";
char ha='hello world!';

(4)、变量命名。

  在C#中,命名尽量的采用英文,尽量减少一些简单变量的出现(比如:a,b,c),如果出现的英文单词太长,则截断后面,采用前面三个或者前面四个字母来给变量命名;同时避免使用static等关键字来命名,以免和修饰词相混淆。

(5)、下划线及注释

  下划线用了分隔变量名字中的作用域标注和变量的语义,如source_file。

   注释是程序设计中必须存在的,而且是体现程序直观性、可读性的一个重要措施,如果在程序中没有注释或者关键的函数中注释不清楚,那么程序的可理解性就相当差,一般都只有自己才能清楚地明白其中所要表达的意思,意思想让别人去读懂程序,则会花费很大的时间和精力,特别是在结对编程中,注释不到位很可能会造成结对伙伴的误解。所以注释要做到准确,规范。

(二)、代码设计规范。

(1)、C#中 的类。

   在C#程序设计中,类的使用要充分合理,不能出现太多的类,也不能不出现,同时,在不同的类中的函数,要注意区分,不能混淆函数的作用范围和类所针对的对象以及公共(public)、保护(protected)、私有成员(private).在各个类中的构造函数(Constructors)和析构函数(Destructor),以及类之间的继承,层次都要清晰明了。

 (2)、错误处理。

参数处理:在VS中,所有的参数都要验证正确性,从外部传递过来的参数也一样。

断言:

Assert(p!=null);

6、记录在改进程序性能上所花费的时间,描述你改进的思路,并展示一张性能分析图(由VS 2017的性能分析工具自动生成),并展示你程序中消耗最大的函数。

效能分析:

 

7、结合在构建之法中学习到的相关内容与结对项目的实践经历,撰写解决项目的心路历程与收获,以及结对感受,是否1+1>2。

  通过这次的结对编程,很多东西都是新学的,所以在刚开始的准备阶段花了很多的时间;同时,这次作业也是一个相互学习的过程,我在程序设计上面不是很擅长,所以结对伙伴在这上面给了很大的帮助,自己也有了很大的进步。虽然作业难度一次比一次大,但是多花点时间还是能够解决。总的来说,这次作业给我的感受是1+1>2的。

 

猜你喜欢

转载自www.cnblogs.com/gaojunlong/p/10633848.html