第一次做业

课程:软件工程原理与方法html

要求连接:https://edu.cnblogs.com/campus/xnsy/SoftwareEngineeringClass2/homework/2706程序员

课程目标:阅读web

1、创建博客介绍本身算法

  我是2017级计算机越远本科生,一名国旗护卫队队员。来讲一下总体的思想导向,到了这个年纪确定有本身的迷惘。有我的意义危机的追问;怎样理解解释这个世界;关于将来工做的预想不肯定和担心,以致于恐慌;思考何为人,自由意志,形而上学的终极。为了解答本身,看了不少书,喜欢读书喜欢哲学喜欢写字,不敢想从事相关这些方面的工做。专业方面还能够,大一开始因为自学的多打的底子还能够,如今在学习Python,并打算精通它。编程

2、阅读与思考windows

  (1)回想大一时对专业的畅想设计模式

    报考专业时,计算机软件什么的是热门,就业率高工资高尽管累,你不能要求我要追求理想去学哲学,由于咱们中华子民受道教入世思想影响而来的实用主义让我考虑现实,就算除去这方面,我还有努力生存挣脱较低的阶级的欲望。可是我仍是对这方面蛮有兴趣的,打小儿就喜欢数学,以为黑客(此指最原始的黑客)很帅,很有侠风。安全

    符合期待,由于编程。服务器

    蛮喜欢,也蛮擅长。网络

    去天津或北京,公司期待华为。

  (2)如今的你

    只知道基础编程,一点儿算法。我以为缺少实践。

  (3)选择的十字路口

    考研。考试能力强,学习能力强,数学优点。大三全力备考,这暑假作准备工做。

3、提有质量的问题

  (1)第一章  概论  1.2.3中有一个提问也是我本身想问的——“之后的‘人工智能’会本身写程序吗?”

    人工智能具备解决软件开发中的一个古老问题的潜力。代码编写或操纵其余代码的能力的概念已经存在了很长时间,通常称为元编程(它实际上起源于20世纪50年代末的Lisp)。它解决的难题,目前都还在人们的想象之中。

    可是,如今人工智能让改变发生了。

    使用人工智能,计算机可以理解一个软件开发项目从无到有的发展历史过程当中的全部代码,并当即改进或者删除单独一行代码中的bug,无论是用什么编程语言。即使是一个缺少经验的或者中等水平的程序员都能讲清楚让计算机自我编程的原理。由此,                一个癌症项目的研究可能几天或者几个月就能完成,而不须要花费好几年的时间,这将带来显著的进步。今天,这项最终将会带来颠覆性改变的技术尚处在萌芽时期,可是,它已经开始生长。好比,谷歌的TensorFlow机器学习软件,让每位程序员都能将                神经网络直接融入到所开发的APP中,让APP拥有识别图片中的人和物体的能力。要把这些想法变成现实,你将再也不须要一个博士学位。让业余人士也能够修正程序,这可能会成为AI发展历史上最大的突破。

  (2)本书屡次出现“可维护性”,究竟什么怎么实现维护?

  可维护性是指当须要修改程序的某个模块时,对其余模块的影响和修改的代价

  代码风格:

    1.     命名规范

    命名要能传递出变量或者方法的含义,少用缩写

    私有成员以m开头,静态成员以s开头,常量用大写字母等

    2.     代码排版

    留出合理的空白空间来区分不一样的代码块

    同类的变量的声明要放在一组,不一样类变量之间留出一行空白等

    3.     关键注释

    仅为关键的代码添加注释

  代码的层次性:

    对于一段业务逻辑,不要试图在一个方法或者一个类中去所有实现,而要将它分红几个子逻辑,而后让每一个子逻辑作本身的事情;当代码的层次性出来之后,就能够作到单一职责了

  面向拓展编程:

    在写程序的过程当中要时刻考虑到扩展

  设计模式:

    恰当地使用设计模式能够提升代码的可维护性和可扩展性

  (3)“什么是好的程序设计思想?”(第三章,p45)

    

面向对象编程四大特性

 

抽象:对有共性的事物中待关注的部分加以抽象成接口或类。包括过程抽象和数据抽象

封装:将具备共性的一类事物的共性部分抽象出来造成一系列封闭的、自治的数据与过程,经过private、protected、public来决定对外开放的级别。封装要作到低耦合高内聚。

 

继承:当具备某些共性时,一个新类能够经过继承另外一个已实现的类的方法、数据并加以扩展实现

多态:不一样子类对象实现父类的抽象方法的行为能够不同 (注意与重载的区别)

 

 

面向对象编程6大原则

 

单一职责原则:一个类最好只实现一个粒度足够小的功能,该功能不能再被细分。防止类中出现两个功能相互影响等状况。

里氏替换原则:子类的实现不影响父类已有的非抽象方法调用,只扩展不修改。防止因子类重载或重写父类方法形成调用混淆、功能紊乱等的状况。

依赖倒置原则:高层级的类尽可能不要直接对低层级的类产生依赖,而是尽可能面向接口编程,经过接口(也能够是方法或委托)传递依赖关系,防止出现低层级的类修改致使原有的高层级调用关系失效的状况。

接口隔离原则:接口实现的功能粒度应最小化,即多个功能应分红多个独立的接口(原则上如此,实际编码可适当酌情设计,把握度),防止类在实现接口时须要实现该类没必要要的功能,形成代码复杂度增长

迪米特法则:对象的行为实现要保持对其余对象尽可能少的了解,即对象的实现尽可能避免对其余的类的依赖,作到高内聚低耦合。 例如A的实现与B和C产生了关联,而B和C属于聚合关系,A的实现能够只和B关联,则就不必使A和B产生直接的关联。因此一个类应尽可能少的依赖其余类,同时也要尽可能少的让其余类对你产生依赖。防止修改类时出现藕断丝连的状况

开闭原则:对扩展开放,对修改关闭。即要求用抽象构建框架,用实现扩展细节(http://blog.csdn.net/zhengzhb/article/details/7296944);专门函行为要单一功能,通用行为要抽象。防止后期需求变动引发的代码修改量大

 

面向对象编程的23种特性

 

 

附:

多态与重载的区别:http://blog.csdn.net/weigb/article/details/1864192 多态是对虚方法的重写,编译时没法肯定方法调用状况。重载容许一个类中有重名的方法,方法中参数不一样。
---------------------
做者:shuizhizhiyin
来源:CSDN
原文:https://blog.csdn.net/shuizhizhiyin/article/details/51718900
版权声明:本文为博主原创文章,转载请附上博文连接!

  (4)、“同时编译Debug|Retail版本”(第四章,p74)

    DEBUG是一种计算机程序。马克2号(Harvard Mark II)编制程序的葛丽丝·霍波(Grace Hopper)是一位美国海军准将及计算机科学家,同时也是世界最先的一批程序设计师之一。有一天,她在调试设备时出现故障,拆开继电器后,发现有只飞蛾被夹扁在触点中间,从而"卡"住了机器的运行。因而,霍波诙谐的把程序故障统称为"臭虫(BUG)",把排除程序故障叫DEBUG,而这奇怪的"称呼",竟成为后来计算机领域的专业行话。如DOS系统中的调试程序,程序名称就叫DEBUG。DEBUG在windows系统中也是极其重要的编译操做。

  (5)“线程安全”(第四章)

  

若是你的 代码所在的进程中有多个 线程同时运行,而这些线程可能会同时运行这段代码。若是每次运行结果和 单线程运行的结果是同样的,并且其余的 变量的值也和预期的是同样的,就是线程安全的。
或者说:一个类或者 程序所提供的 接口对于线程来讲是 原子操做或者多个线程之间的切换不会致使该接口的执行结果存在 二义性,也就是说咱们不用考虑同步的问题。
线程 安全问题都是由 全局变量静态变量引发的。
若每一个线程中对全局变量、静态变量只有读操做,而无写操做,通常来讲,这个全局变量是线程安全的;如有多个线程同时执行写操做,通常都须要考虑线程同步,不然就可能影响线程安全。
 

 

4、了解和调查源程序版本管理工具  

1.Microsoft TFS:

优势:任务版上能将需求、项目进度尽收眼底,对于小团队而言,比甘特图更有用,集成了项目管理、版本控制、BUG 跟踪,能有效实现 SCRUM,能与 VS 无缝接合。

缺点:搭建、维护tfs比较复杂,硬件要求也比较高。

2.GitHub:

优势:GitHub是一个很是万能的工具。对于任何大小的项目,他都是理想的工具;他也是伟大的web工做流工具。首先,他能够做为一个版本控制系统和协做工具,用它来发布工做。

        利用GitHub,你能够将项目存档,与其余人分享交流,并让其余开发者帮助你一块儿完成这个项目。优势在于 ,他支持多人共同完成一个项目,所以大家能够在同一页面对话交流。

        建立本身的项目,并备份,代码不须要保存在本地或者服务器,GitHub作得很是理想。

        学习Git也有不少好处。他被视为一个预先维护过程,你能够按本身的须要恢复、提交出现问题,或者您须要 恢复任何形式的代码,能够避免不少麻烦。Git最好的特性之一是可以跟踪错误,这让使用Github变得更加简 单。Bugs能够公开,你能够经过Github评论,提交错误。在GitHub页面,你能够直接开始,而不须要设置主机或者DNS。

缺点:若是,你是Github使用新手,首先的挑战就是摆正心态——须要不断实践和时间。他可能不是捕捉创意过程和记录创意点子的最佳工具。对于这种特殊功能模拟能够选择LayerVault 或其余相 似工具。

         以前,咱们已经强调过Github很是适用代码跟踪,可是却不是最好的设计跟踪工具。将图片内容转 化为代码,或者将设计用于产品设置,看起来依旧不是那样顺利。这是由设计者决定的,然而,一些人发现 GUI 有点混乱,选择CLI代替。一些开发人员学习主要使用Git命令 ,这样能够解释为何他们不太喜欢GUI的缘由了。

         稍加练习,命令的学习是不太困难的。然而,你喜欢每天 写命令吗?特别是跟踪项目历史或解决冲突的时候。因此就有了另一群喜欢GUI的人们。将提交、修改、移 动文件等操做可视化,会有一个更好的体验。而这些,就如以前提到的,须要时间来适应。

         若是,你专门在GIthub上工做,版本控制存储库就值得你拥有,也须要你长期付出。

3.Trac:

优势:Trac作一个SCM配置管理平台,意味着它有良好的扩充性

        Trac的权限体系是比较完备的设计

        很是灵活,能够为所欲为的定制,能够和TortoiseSVN集成。

缺点:不支持多项目,

        需求和缺陷没有分离,

        用 wiki 来替代 Word 等工具编写文档对于产品策划来讲门槛过高了,

        中文化不完整,美术人员接触起来困难重重,

        不显示中文名,本地化作得不好,

        核心功能不多,不安装插件基本上无法用。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息