精华内容
下载资源
问答
  • 项目的开始阶段,一件必不可少的的事情就是就是确定代码的分层和架构。该分层和架构一定程度上决定了未来整个项目的代码风格和维护性,对于项目的长期维护,代码架构的设计是一件非常重要的事情。 介绍代码...

    在项目的开始阶段,一件必不可少的的事情就是就是确定代码的分层和架构。该分层和架构在一定程度上决定了未来整个项目的代码风格和维护性,对于项目的长期维护,代码架构的设计是一件非常重要的事情。
    在介绍代码架构的设计之前,首先我们先谈论下为什么代码架构的设计师是一件非常重要的事情。

    为什么要有代码架构

    简单来讲,代码架构是为了提供更好的可读性和可维护性。

    提高可读性和可维护性

    大家可能还记得刚开始写代码的时候,所有的代码都会集中在一个文件,甚至一个函数中,比如:

    # main.py
    
    def main(args: List[str]):
        input args validation...
        ...
        do first thing...
        ...
        do second thing...
        ...
        do third thing...
        ...
    

    随着需求的增长,代码量的扩大,这样的代码是很难阅读和进行维护的,于是我们会使用重构的手段去让代码更便于维护和阅读:

    # main.py
    
    def do_first_thing(args: List[str]):
        ...
    
    def do_second_thing(args: List[str]):
        ...
    
    def do_third_thing(args: List[str]):
        ...
    
    def validation(args: List[str]):
        ...
    
    def main(args: List[str]):
        validation(args)
        do_first_thing(args)
        do_second_thing(args)
        do_third_thing(args)
    

    进一步,我们将代码分散在不同的文件、文件夹中,通过良好的命名,我们甚至可以在不去看具体的代码实现的情况下,仅仅通过文件名就能判断出在做的事情:

    │   main.py
    │
    ├───job
    │       first.py
    │       second.py
    │       third.py
    │
    └───validation
            input_params_validation.py
    

    而更深层次的,代码架构的设计会降低代码的腐化速度

    降低代码的腐化速度

    通常在一个项目新起的时候,项目代码的可读性,维护性都会做的很好,然而随着项目的庞大,不同背景不同能力的开发人员的进场和离场,代码的可读性和可维护性都会渐渐的变差,这个是一个项目进行过程中不可避免的,聪明的团队通常不但会制定一系列的比如代码质量扫描,代码review等手段降低代码的腐化速度,还会在在需求的开发过程中安排一定资源的代码重构的任务,去不断重构腐化的代码。
    而一个好的代码架构,也会在一定程度上制约开发人员“生产”腐化代码的可能,从而降低了代码的腐化速度。这是因为在制定了代码架构之后,入场的开发人员们通常会选择遵从代码架构的规则编写代码,通过规则的制约,可以很好的制止一些不谨慎的代码的产生。
    我们通过一个反例来看看,一个不好的代码架构会对项目的开发产生怎样的影响。
    在一个真实项目中,大家制订了一个这样的简单代码架构:

     

    项目代码使用简单的Controller->Service->Repository->Entity分层,其中Entity层作为数据库的映射,并且整个代码架构中,可以随意传递entity, 甚至直接将entity传递出去

    这样的代码架构会导致以下几个问题:

    1. 没有DTO的存在,开发人员会因为方便倾向于把entity直接丢出去作为request和response的数据映射。这样当出现传入参数和数据库table设计出现不一致时,会出现很多的代码问题。
    2. 由于并没有任何相关的约束并且由于#1,开发人员有可能将业务逻辑相关的代码同时放在controller和service中。这种做法会导致controller和service层出现强耦合,并且业务逻辑被分散在代码的各个角落,导致很难去阅读进一步降低可维护性。
    3. 由于代码的事务控制是在service层做的,因为#2的原因,很多人在开发过程中并没有一个对系统的全局概念,直接导致了很多的业务代码出现了只能部分回滚数据的问题,直接导致的很多bug的出现。

    由上文可以看到,一个好的代码架构设计对于项目的必要性。接下来将介绍在web service中,比较常使用的代码组织架构。



     

    展开全文
  • 理论1.领域驱动设计,极限编程,xp,结对。 理论2.基本的概念模型,系统结构的层次,...最好是调查研究和设计的时候决定。 编写代码是对我们思路的一个翻译。 设计阶段的输出:是一个有弹性的核心。健壮,有预见性。
    理论1.领域驱动设计,极限编程,xp,结对。
    
    理论2.基本的概念模型,系统结构的层次,主要的职责分配,主要对象的交互。最好是在调查研究和设计的时候决定。
    编写代码是对我们思路的一个翻译。
    设计阶段的输出:是一个有弹性的核心。健壮,有预见性。



    展开全文
  • 第一阶段中,您将采用缺乏可访问性的静态设计,并将该设计转换为可不同大小的显示器上做出响应,并可供屏幕阅读器使用。 您还将添加服务工作人员,以开始为用户创建无缝的脱机体验的过程。 规格 您已获得餐厅...
  • 但现在有个很现实的问题,设计在一般项目开发中应该做到什么程度? 或者说项目设计阶段应该做哪些事情?完成哪些输出物,就我知道的是概要设计文档,详细设计文档,还有源代码(详细到函数还是要更详细?) ...
  • 第1阶段中,您将采用缺乏可访问性的静态设计,并将该设计转换为可不同大小的显示器上做出响应,并可供屏幕阅读器使用。 您还将添加服务工作人员,以开始为用户创建无缝的离线体验的过程。 规格 您已获得餐厅...
  • 该资料是《SQL Server 2008数据库设计与实现》的随书源代码 对应的书籍资料见: SQL Server 2008数据库设计与实现(关系数据库实现的通关宝典) 基本信息 原书名: Pro SQL Server 2008 Relational Database Design ...
  • Code Compl 代码大全

    2011-05-26 12:09:22
     8.7 确定产品代码中该保留多少防范式代码  8.8 防范式编程时保持防范  其他资源  关键点  第9章 伪代码编程过程  9.1 创建类和子程序的步骤概述  创建一个类的步骤  创建子程序的步骤  9.2 伪代码  9.3...
  • 第一阶段中,您将采用静态设计,该设计缺乏可访问性,并将该设计转换为可不同大小的显示器上响应并可供屏幕阅读器使用的设计。 您还将添加服务工作人员,以开始为用户创建无缝的脱机体验的过程。 规格 您已获得...
  • 第一阶段中,您将采用缺乏可访问性的静态设计,并将该设计转换为可不同大小的显示器上做出响应并可供屏幕阅读器使用的设计。 您还将添加服务工作人员,以开始为用户创建无缝的脱机体验的过程。 规格 您已获得...
  • 冲刺阶段(三)

    2017-05-07 18:58:00
    主要是开始设计绘画app的框架,主要从网站上从别人的app加以借鉴。 关羽网站页面的代码再加以改造。 遇到的困难: 框架大多是从网站 上加以借鉴,所以一定程度上主要是改写大体的,完全整体难编写。 转载于:...

    昨天做了什么:

          界面设计和代码的编写,框架设计已经基本定下。

    今天要干什么:

         主要是开始设计绘画app的框架,主要从网站上从别人的app加以借鉴。 关羽网站页面的代码再加以改造。

    遇到的困难:

         框架大多是从网站 上加以借鉴,所以在一定程度上主要是改写大体的,完全整体难编写。

    转载于:https://www.cnblogs.com/bai123/p/6821814.html

    展开全文
  • 第一阶段个人总结03

    2017-05-04 01:29:00
    昨天干了什么:  先简单设计了一下算法,没有具体实现,... 搜索算法还没有确定好各个属性之间的先后顺序,所占评分权值,所以先写了表单的设计代码表单设计中,因为输入项比较多,所以应根据每一输入项的要...

    昨天干了什么:

      先简单设计了一下算法,没有具体实现,后写了表单的设计,已完成基本模型,但对于各类要求还有待提高

    今天准备干什么:

      打算开始搜索算法的编写,具体可以在后期加以完善(主要是怎么分各个类型的属性之间的先后关系)

    遇到什么困难:

      搜索算法还没有确定好各个属性之间的先后顺序,所占评分权值,所以先写了表单的设计代码,在表单设计中,因为输入项比较多,所以应根据每一输入项的要求设定输入内容的规格,这个还是不够完善,打算在查询一下相关资料,以便于完善各种输入框不同的输入要求

    转载于:https://www.cnblogs.com/zhaoziming/p/6805002.html

    展开全文
  • 第一阶段中,您将采用缺乏可访问性的静态设计,并将该设计转换为可不同大小的显示器上做出响应并可供屏幕阅读器使用的设计。 您还将添加服务工作人员,以开始为用户创建无缝的脱机体验的过程。 规格 您已获得...
  • 第一阶段中,您将采用一个静态设计,该设计缺少可访问性,并将该设计转换为不同大小的显示器上可以响应并且可以供屏幕阅读器使用。 您还将添加服务工作人员,以开始为用户创建无缝的脱机体验的过程。 规格 您已...
  • 设计模式

    2017-11-09 14:11:00
    IT圈一直有轮回,一开始说某某某东西非常好,似乎出现了...十多年前,国内的软件开发还处于粗犷式的野蛮发展阶段,各种码农写各自的代码,码农之间经常看不懂对方什么东西,同时又互相轻视对方的代码水平。直到...
  • 软件工程从开始到结束一般会经历需求、分析、编码、测试、部署、维护6个阶段,每个阶段都会固定的输出物,例如刚开始的产品需求文档(PRD),后面的架构设计文档等。一个应用架构设计的形成不单单是技术上,是统筹性...
  • 我参与、开发和接触到的很多项目中,曾经都很喜欢在开始阶段做一个设计。这本身没有错,问题在于,经常还没有用户或者网站总用户才几十万的场景下,去考虑高并发,去考虑高负载,去设计能够跑N台服务器上的...
  • Android高级编程--源代码

    热门讨论 2013-02-06 17:39:21
     由于Android构建开源代码的框架之上,而且提供了强大的SDK库和开放的理念,所以它为广大的没有任何移动应用程序开发经验的新手开辟了一条开发完美的移动应用程序的康庄大道。而富有经验的移动开发人员现在也可以...
  • 有状态SessionBean中,用累加器,以对话状态存储起来,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用完毕,从内存中清除…… Java Socket 聊天...
  • 他曾IBM工作多年,能使用多种语言进行编程(多种机器上使用汇编语言和高级语言),设计和实现了实时闭环工业控制系统。Horton拥有丰富的教学经验(教学内容包括C、C++、Fortran、PL/1、APL等),同时还是机械、加工...
  • 2013.4.9阶段学习总结

    2013-04-09 16:16:13
    用时大概一个月吧,终于做完一个模块了,从数据库的设计,到代码的实现,都是从零开始的。确确实实和之前看视频之后照着做项目的感觉不一样,看视频是直接告诉你怎么做,而自己做的话,从数据库如何设计主键,设计...
  • 软件设计规范

    2015-03-11 11:57:50
    要求:从定义开始设计。完整性,彻底地定义从无开始的整个设计。这是因为软件之软,也是因为硬件平台的多样性和特殊性。 完整把握,从头设计是第一原则。因为软件世界自己并不能统一,还有继续分化的趋势。没有...
  • 所谓填补空白,具体说就是让像我一样的操作系统爱好者读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了。 那么为什么我又写作了第...
  • 所谓填补空白,具体说就是让像我一样的操作系统爱好者读完本书之后,能够有信心去读其他比较流行的开源的操作系统代码,有能力从零开始自己动手写操作系统,而这个任务第一版已经完成了。 那么为什么我又写作了第...
  • 给出通用的框架,通过大量学习数据训练出合适的权值,权值就是逻辑,这是未来的方向,那种先设计算法敲代码的日子该一去不复返了,以后甚至程序员的工作都由机器全部完成也不是没有可能。 深度神经网络算法之编程...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 478
精华内容 191
关键字:

代码设计在什么阶段开始