精华内容
下载资源
问答
  • 如何进行CodeView

    千次阅读 2019-04-17 16:59:04
    关于Code Review的重要性,我相信好的工程师都能认识到。 参考 "让Code Review称为一种习惯" 和 "从Code Review谈如何做技术"。 同时引用一下有人对Google Code Review的描述: The biggest thing that makes Google...

    关于Code Review的重要性,我相信好的工程师都能认识到。 参考 "让Code Review称为一种习惯" 和 "从Code Review谈如何做技术"。

    同时引用一下有人对Google Code Review的描述:

    The biggest thing that makes Google’s code so good is simple: code review. At Google, no code, for any product, for any project, gets checked in until it gets a positive review.

    Code Review 主要Revivew什么

    Architecture/Design

    单一职责原则.

    这是经常被违背的原则。一个类只能干一个事情, 一个方法最好也只干一件事情。 比较常见的违背是处理促销的时候,同时处理验券逻辑。

    行为是否统一

    比如缓存是否统一,错误处理是否统一, 日志打印是否统一, 方法实现是否统一等等。

    同一逻辑/同一行为 有没有走同一Code Path?低质量程序的另一个特征是,同一行为/同一逻辑,因为出现在不同的地方或者被不同的方式触发,没有走同一Code Path 或者各处有一份copy的实现, 导致非常难以维护。

    代码污染

    使用魔数,例如直接比对数字。编写不容易阅读的代码,应用了很多复杂的设计。

    重复代码

    主要看有没有把公用组件,可复用的代码,函数抽取出来。

    Open/Closed 原则

    就是好不好扩展。 Open for extension, closed for modification.(做好接口设计会很好解决这些问题)。

    面向接口编程 和 不是 面向实现编程

    主要就是看有没有进行合适的抽象, 把一些行为抽象为接口。

    健壮性

    对Corner case有没有考虑完整,逻辑是否健壮?有没有潜在的bug?

    有没有内存泄漏?有没有循环依赖?(针对特定语言,比如Objective-C) ?有没有野指针?

    有没有考虑线程安全性, 数据访问的一致性

    错误处理

    有没有很好的Error Handling?比如Price接口出错。

    有没有增加必要的监控,及时报警。

    改动是不是对代码的提升

    新的改动是打补丁,让代码质量继续恶化,还是对代码质量做了修复?

    效率/性能

    两层循环,数据请求量的限制,较大数据等耗时操作是否处理得当。

    关键算法的时间复杂度多少?有没有可能有潜在的性能瓶颈。

    复杂需求,是否有必要的设计, 可预见的效率问题, 开发模式一致性的问题 应该尽早在Design Review阶段解决。如果Design阶段没有解决,那至少在Code Review阶段也要把它找出来。

    Style

    可读性

    衡量可读性的可以有很好实践的标准,就是Reviewer能否非常容易的理解这个代码。 如果不是,那意味着代码的可读性要进行改进。

    命名对可读性非常重要,我倾向于函数名/方法名长一点都没关系,必须是能自我阐述的。

    英语用词尽量准确一点(哪怕有时候需要借助Google Translate,是值得的)

    函数长度/类长度

    函数太长的不好阅读。 类太长了,比如超过了1000行,那你要看一下是否违反的“单一职责” 原则。

    恰到好处的注释。 但更多我看到比较差质量的工程的一个特点是缺少注释。

    参数个数(不要超过5个参数)

    Review Your Own Code First

    跟著名的橡皮鸭调试法(Rubber Duck Debugging)一样,每次提交前整体把自己的代码过一遍非常有帮助,尤其是看看有没有犯低级错误。

    如何进行Code Review

    多问问题。多问 “这块儿是怎么工作的?” “如果有XXX case,你这个怎么处理?”

    每次提交的代码不要太多,最好不要超过1000行,否则review起来效率会非常低。

    当面讨论代替Comments。 大部分情况下小组内的同事是坐在一起的,face to face的 code review是非常有效的。

    区分重点,不要舍本逐末。 优先抓住 设计,可读性,健壮性等重点问题。

    Code Review的意识

    作为一个Developer , 不仅要Deliver working code, 还要Deliver maintainable code.

    必要时进行重构,随着项目的迭代,在计划新增功能的同时,开发要主动计划重构的工作项。

    开放的心态,虚心接受大家的Review Comments。

    审核人及职责分配
    所谓职责归属:即指谁对这个Code负责

    提交人

    审核人

    职责归属

    P2.1及以下

    P2.3

    审核人

    P2.2及以上

    P2.3

    提交人&审核人

    p2.3及以上

    p3.1/p3.2

    提交人&审核人

    对于comments的检查。周会上抽查。

    审核流程
    开始
    RD完成开发自测
    自查不过
    自查通过
    Review your
    own code
    RD按照comment意见修改
    重新自测并重新提交代码


    是否可以Merge
    Merge至主分支
    1.只有主分支权限的人才能Merge

    结束


    是否需要
    代码走读
    RD发起Code Review
    跟著名的橡皮鸭调试法(Rubber Duck Debugging)一样,每次提交前整体把自己的代码过一遍非常有帮助,尤其是看看有没有犯低级错误。
    是否走读标准
    1.修改了核心链路代码;
    2.修改代码行数> 600 行;
    3.修改公用业务组件或逻辑;
    4.审核人提出走读意见;
    1.按照要求选择审核人;
    2.设置PR完成时间;
    3.补充code主要变动范围
    4.跟进PR完成状态
    发起人组织
    Code Review会
    stash上同步记录 commits

    Review
    是否通过
    merge条件:
    1.approve >= 2人;
    2.comment 都完成修改;

    备注标签
    流程节点
    分支判断
    图示例

    常见代码开发规范

    thrift服务提供一般情况都需要在finally里输出info级的入参和返回参数的日志

    实现Object的toString方法而不是使用json序列化工具输出日志

    Integer的等值使用equals而不是==

    使用apache commons 包而不是自己造轮子

    组织参数抽取方法来完成而不要在service里面写,方法命名规范成buildXXXXX

    线程池的使用需要统一到一个Utils类中,避免线程池定义泛滥。

    所有远程服务调用都需要封装delegate类,禁止直接使用octo客户端进行调用。在真正调用一般都要finally里输出info日志 入参和返回值。

    静态变量需要统一在一个类中定义。

    OCTO生成的类不要传递到service层,构造一个本地类进行使用。

    不要把配置写在代码里,充分利用MCC和*.properties

    MCC里配置开关和频繁修改的属性,长期不修改的放到*.properties

    给方法起名字是为了自己和其他人能看懂

    变量命名以及方法名不要使用拼音缩写

    Json序列化统一使用travel-insurance-common表里的JsonUtils

    不要在ThriftService里写业务逻辑。下沉service

    不要拷贝代码

    执行update语句一定要注意 where 条件里 一定要走索引,这句话的意思是,把where 条件单独放一个select里 然后explain一下,如果是全表扫描 那这个SQL会锁全表。

    不要在返回boolean的方法里面写if (xxxxx&xxxx){return true}else{ return false}

    永远不要在事务里rpc

    抛出异常最好子类化,这样从cat看到异常就知道是啥原因。

    逻辑嵌套不要超过3层

    @Transactional(rollbackFor =Exception.class) 使用事务的时候 一般情况这么用。

    查询不要使用mybatis生成的condition来拼,mybatis生成工具只负责生成表的po和最基本的insert 和update ,如果有分表,请所有sql全部手写,必须带分表键。

    不要在static{}代码块里做初始化动作,禁止在static{}代码块里rpc

    转载于:https://blog.51cto.com/1348916/2380274

    展开全文
  • CodeView

    2007-08-27 23:24:30
    一款很方便的乱码查看器,可以对目前流行的各种字符编码和字符内码进行很好的无误的转换。
  • CodeMirror.MergeView

    千次阅读 2020-02-02 21:14:39
    最近项目上需要实现2个文本的比较展示功能,找了一圈发现CodeMirror.MergeView 自带这个功能,其实里面用的diff插件是Google的diff-match-patch,在github的星星还蛮多,就用选择这个插件了。 下面写个demo以便备忘...

    最近项目上需要实现2个文本的比较展示功能,找了一圈发现CodeMirror.MergeView 自带这个功能,其实里面用的diff插件是Google的diff-match-patch,在github的星星还蛮多,就用选择这个插件了。

    下面写个demo以便备忘。

    安装依赖

    npm install codemirror
    npm install diff-match-patch
    

    完整代码

    <template>
      <div id="view"></div>
    </template>
    
    <script>
    import CodeMirror from 'codemirror'
    import 'codemirror/lib/codemirror.css'
    import 'codemirror/addon/merge/merge.js'
    import 'codemirror/addon/merge/merge.css'
    import DiffMatchPatch from 'diff-match-patch'
    window.diff_match_patch = DiffMatchPatch
    window.DIFF_DELETE = -1
    window.DIFF_INSERT = 1
    window.DIFF_EQUAL = 0
    
    export default {
      name: 'Diff',
      mounted () {
        let value = 'abcc'
        let orig2 = 'abcd'
        this.initUI(value, orig2)
      },
      methods: {
        initUI (value, orig2) {
          if (value == null) {
            return
          }
          let target = document.getElementById('view')
          target.innerHTML = ''
          CodeMirror.MergeView(target, {
            value: value, // 上次内容
            origLeft: null,
            orig: orig2, // 本次内容
            lineNumbers: true, // 显示行号
            mode: 'text/html',
            highlightDifferences: true,
            connect: 'align',
            revertButtons: true, // 是否显示还原按钮
            readOnly: true// 只读 不可修改
          })
        }
      }
    }
    </script>
    
    <style scoped>
    
    </style>
    
    

    最终效果

    在这里插入图片描述


    工程代码:https://github.com/clj198606061111/vue_itclj_demo/blob/master/src/components/Diff.vue

    展开全文
  • codeMirror是一个很强大的代码编辑器,其中的mergeView方法可以进行代码的对比 官网地址:https://codemirror.net/ gitHub地址:https://github.com/codemirror/CodeMirror 参考:...

    codeMirror是一个很强大的代码编辑器,其中的mergeView方法可以进行代码的对比

    官网地址:https://codemirror.net/
    gitHub地址:https://github.com/codemirror/CodeMirror
    参考:https://www.jianshu.com/p/2ba3cf5057c6

    使用

    1.下载codemirror

    npm install codemirror
    

    2,在需要使用的页面引入codeMirror。我一般是封装成一个组件,需要用的时候直接引入即可

    import CodeMirror from 'codemirror';//引入codeMirror
    import 'codemirror/addon/merge/merge.css';//引入codeMirror样式
    

    3,依赖

    依赖地址:https://cdnjs.cloudflare.com/ajax/libs/diff_match_patch/20121119/diff_match_patch.js
    import './diff_match_patch';//codeMirror的比对是依赖于google的这个插件来实现的,但是在codeMirror底层并没有这个插件,所以要自行引入,我这里是下载到了本地之后再引入的
    

    4,对比(如果要实现对比功能,必须引入下面两个文件)

    import 'codemirror/addon/merge/merge.css';
    import 'codemirror/addon/merge/merge.js';
    

    5,mode

    import 'codemirror/mode/javascript/javascript'
    import 'codemirror/mode/xml/xml'
    import 'codemirror/mode/python/python'
    import 'codemirror/mode/markdown/markdown'
    。。。。。
    

    6.fold

    import "codemirror/addon/fold/foldgutter.css"
    import "codemirror/addon/fold/foldcode"
    import "codemirror/addon/fold/brace-fold"//折叠js
    import "codemirror/addon/fold/xml-fold"//折叠xml和html
    import "codemirror/addon/fold/markdown-fold"//折叠md
    import "codemirror/addon/fold/comment-fold"//折叠注释,但是测试一下只能折叠html的注释;
    

    7.active-line

    import "codemirror/addon/selection/active-line"
    

    5,代码比对插件就完成了最基础的文件引入,下一步是在react中使用

    class CodeMirrors extends Component{
      constructor(props) {
        super(props);
          this.state= {
            FileContentData: props.FileContentData,
          }
      }
      componentDidMount(){
        const {FileContentData} = this.props
          this.initUI(FileContentData)
      }
      initUI(data) {
        var target = this.refs['react-diff-code-view'];//获取dom元素
        console.log(target)
        target.innerHTML = "";//每次dom元素的内容清空
        CodeMirror.MergeView(target, Object.assign({}, {
          readOnly: true,//只读
          lineNumbers: true, // 显示行号
       	  theme: 'eclipse', //设置主题
          value: data.lhContent,//左边的内容(新内容)
          orig: data.rhContent,//右边的内容(旧内容)
          mode: "javascript",//代码模式为js模式,这里还可以是xml,python,java,等等,会根据不同代码模式实现代码高亮
          highlightDifferences: "highlight",//有差异的地方是否高亮
          connect: null,
          revertButtons: false,//revert按钮设置为true可以回滚
          styleActiveLine: true,//光标所在的位置代码高亮
          lineWrap:true,// 文字过长时,是换行(wrap)还是滚动(scroll),默认是滚动
        smartIndent: true, // 智能缩进
          matchBrackets: true, // 括号匹配
          foldGutter:true,//代码折叠
          gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"]
        // 智能提示
        extraKeys:{
            "Alt-/": "autocomplete", "F11": function (cm) {
                cm.setOption("fullScreen", !cm.getOption("fullScreen"));
            }
        }
        }, this.props.options || {}));
      }
      render(){
        return (
          <div className="react-diff-code-view" style={{height: '100%'}}>
            <div ref="react-diff-code-view" style={{height: '100%'}</div>
          </div>
        )
      }
    }
    export default CodeMirrors;
    

    bug1:当这个组件在另外一个页面使用时,由于reder会执行两次,一次是旧的state,一次是新的state,但是codeMirror组件的componentDidMount只执行一次就必须想办法在别的生命周期函数里面去执行initUI函数,以获取最新的数据

      componentWillReceiveProps(nextProps){
          this.initUI(nextProps.FileContentData);
      }
    

    bug2:很多同学下载完codeMirror之后根本找不到mergeView这个方法,原因是下载工具npm或者是tnpm/cnpm不稳定,你的node_modules包根本就没有下载好,重新npm下载或者直接把整个codeMirror的文件downLoad到本地,放在lib里面

    对比图基本如下
    在这里插入图片描述

    tip1:修改有差异的背景颜色
      .CodeMirror-merge-r-chunk { background: rgba(30,144,255,0.5); }
      .CodeMirror-merge-r-chunk-start { border-top: 1px solid dodgerblue; }
      .CodeMirror-merge-r-chunk-end { border-bottom: 1px solid dodgerblue; }
      .CodeMirror-merge-r-connect { fill: rgba(30,144,255,0.5); stroke: rgba(30,144,255,0.5); stroke-width: 1px; }
    
      .CodeMirror-merge-l-chunk { background: rgba(30,144,255,0.5); }
      .CodeMirror-merge-l-chunk-start { border-top: 1px solid dodgerblue; }
      .CodeMirror-merge-l-chunk-end { border-bottom: 1px solid dodgerblue; }
      .CodeMirror-merge-l-connect { fill: rgba(30,144,255,0.5); stroke: rgba(30,144,255,0.5); stroke-width: 1px; }
    
      .CodeMirror-merge-l-chunk { background: rgba(30,144,255,0.5); }
      .CodeMirror-merge-r-chunk { background: rgba(30,144,255,0.5); }
      .CodeMirror-merge-l-chunk-start { border-top: 1px solid dodgerblue; }
      .CodeMirror-merge-r-chunk-start { border-top: 1px solid dodgerblue; }
      .CodeMirror-merge-l-chunk-end { border-bottom: 1px solid dodgerblue; }
      .CodeMirror-merge-r-chunk-end { border-bottom: 1px solid dodgerblue; }
    
    展开全文
  • 前端开发 - codeview总结

    千次阅读 2017-11-07 10:26:27
    写在开头这篇文章我会拿来记录自己每次codeview后发现的问题,按日期不定时更新。2017-11-6 页面大节点或模块命名前加 p- ,css选择器中必须要带有前缀的 如 .introduce {} 应该为 .p-list .introduce {} 不要只用...

    写在开头

    这篇文章我会拿来记录自己每次codeview后发现的问题,按日期不定时更新。

    2017-11-6

    • 页面大节点或模块命名前加 p- ,css选择器中必须要带有前缀的 如 .introduce {} 应该为 .p-list .introduce {}
    • 不要只用div 善用h1 h2 h3 span等标签
    • 尽量减少无用的节点嵌套
    • 注意:inline-block元素之间,如果有换行则会产生间距,需要设定父节点的font-size为0以避免之
    • 图片和文字以中线对齐:两者均分别设置vertical-align:middle
    • 若节点内容较少,将其写于一行
    • 图标用i标签,较多元素善用ul和li标签
    • js定义变量时,定义的位置靠近使用的位置
    • 静态变量(如字符串)用对象装起来
    • 少用if else,尽量减轻代码量,多使用 ||、 ? : 等方法
    展开全文
  • 问题是,通过微信可以打开这个跳转的页面,但通过复制页面地址还是显示构建的view地址,说明并没有跳转回传code,而我想要获取的地址是:htt://a.com/b/?c.d&code=xxxxxxx&state=1 如果传这种地址就可以获取到...
  • visual studio code插件的安装及应用
  • 参考博客地址:http://blog.csdn.net/zhouzixin053/article/details/51685858 ...甚至还把我的页面搞得一团糟,就像这样 查看源码可以看到,在html中多了以下代码:<script>"undefined"==typeof CODE_LIVE&&(!fun
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对...
  • 调试工具-CodeView

    千次阅读 2007-01-29 00:01:00
    画面2.1 CodeView调试器的显示画面画面的左上窗口是调试器的主窗口,其显示被调试的源程序或执行代码,左下窗口是命令窗口,用户可输入各种DEBUG命令,右窗口是显示寄存器窗口,它可显示16位和32位寄存器的内容。...
  • 经常打开别人的工程,发现layout里面使用了一些第三方的自定义控件,Graphical Layout标签里是无法预览页面的,抛出一些异常,上图吧:对于提示Tip: Use View.isInEditMode() in your custom views to skip code ...
  • 2017年的时候用过codemirror,当时用的是jQuery库、codemirror、beautify插件。主要实现代码的编辑功能、插入一些变量功能、beautify插件主要用来格式化代码,实现代码美化效果。不过这两年做项目都是用vue了,需要...
  • Vue组件库 View UI快速入门 环境配置

    千次阅读 热门讨论 2021-04-07 16:58:21
    Vue是国内最流行的前端框架之一,View UI是基于Vue的组件库。本文讲解View UI开发环境的搭建,为之后组件测试做基础
  • Visual Studio Code安装和配置V2

    千次阅读 2019-06-07 16:16:24
    随着VS Code功能不断完善,现今版本相比两年前易用性极大提升。之前写的一篇《Visual Studio Code安装和配置》已经过时。本文使用VS Code 1.35.0介绍基本使用方法。 基本环境:VS Code 1.35.0 编译器:MinGW_w64...
  • GitLab的Code Review教程

    千次阅读 2018-08-25 13:15:57
    GitLab Code Review机制说明 Git Workflow 与 Git Code Review Workflow GitLab Code Review 配置说明 GitLab Code Review 流程演示 GitLab For IDE 插件介绍(JetBrains等等) 2、GitLab Code Review机制 ...
  • Myeclipse删除or禁用CodeMix插件

    千次阅读 2018-09-18 10:11:07
    CodeMix 勾选Temporarily disable CodeMix functionality。这个就是禁用codemix插件了 点击apply 重启myeclipse。 翻译:暂时禁用CodeMix功能 点击apply之后会弹出以下界面,我选择的是第5个:兼容性问题,...
  • vue json-viewer codemirror-json格式化

    千次阅读 2019-04-28 09:59:47
    1.安装codemirror https://www.npmjs.com/package/vue-codemirror 2.下面是自己写的例子 main.js里面引入 // 代码输入框 import VueCodemirror from 'vue-codemirror' import 'codemirror/lib/codemirror.css'...
  • CodeMirror文字比对

    千次阅读 2019-03-19 16:35:39
    CodeViewer的核心是代码编辑器,但是文件比对的话可以直接用它的merge插件MergeView 因为我想放在自己的主站上,而我的主站采用angular7作为技术栈,所以这里以angular为例使用MergeView制作自己的文字比对工具 ...
  • CodeMirror使用说明书

    万次阅读 多人点赞 2018-05-09 21:11:34
    本文介绍CodeMirror使用方法,以及内部常用属性和api的使用
  • code实现透明度渐变和颜色渐变的view

    万次阅读 2014-06-14 12:09:04
    最近用code写了些view上的渐变效果,使得app的UI特效不必全部依赖美工出的图片。 效果如下: 主要用到了Layer上的渐变层,核心代码如下,关于CALaer的使用可参考 //Transparent Gradient Layer - (void) ...
  • 今天 在群里有朋友问到,为什么layout xml 在IDE预览模式下会报出异常,比如java.lang....标题正是IDE提示给出的解决方案,Use View.isInEditMode() in your custom views to skip code or show sample data
  • VSCode插件View InBrowser,在浏览器中查看 当前插件功能类似Atom中的“Run-In-Browser”. 插件功能描述:从浏览器中查看html文件,使用系统的当前默认浏览器 注:只支持html文件 默认的快捷键Ctrl+F1,可以自定义...
  • 点击form-->view code, 终于出现了源代码,如下: 令人纠结的是:生成的不是python语言的代码,将就看吧...因为暂时还没有找到如何用这种方式转换成python语言的代码,想看python代码只能老老实实的去pycharm...
  • 我参考了如下两文章: vscode安装教程(windows) ...VS code安装和使用技巧 https://blog.csdn.net/Calvin_zhou/article/details/78487121 VS Code 插件安装及常用插件推荐 https://www.jiansh...
  • 众所周知,android动画分三类:一是View 动画,又叫Tween动画,二是frame 动画(帧动画),又叫drawable 动画,三是属性动画,即property animation.  View动画,根据作用又分为缩放动画ScaleAnimation/移位动画...
  • 最近尝试用了用 VS code, 写个使用心得. 网上很多同 Atom 横向对比的文章好像都偏向于 VS code 比较好用. VS code 感觉就是微软在收购 GitHub 之后,对后者的 Atom 所做的进一步的集成和优化,增加的易用性的同时,...
  • Android应用层View绘制流程与源码分析

    万次阅读 多人点赞 2015-05-31 16:30:18
    【工匠若水 http://blog.csdn.net/yanbober 转载烦请注明...我们有分析到Activity中界面加载显示的基本流程原理,记不记得最终分析结果就是下面的关系:看见没有,如上图中id为content的内容就是整个View树的结构,所
  • 在使用swift_mailer时出现了...Expected response code 220 but got code “”, with message “”” 解决办法: 这个一般是由于encyption配置导致的 Secure Sockets Layer (SSL) Transport Layer Security (TLS)
  • Mysql-error code汇总

    万次阅读 热门讨论 2016-07-03 15:19:48
    OS error code 1: Operation not permitted OS error code 2: No such file or directory OS error code 3: No such process OS error code 4: Interrupted system call OS error code 5: In
  • DebugView 调试入门

    万次阅读 2015-04-10 21:39:25
    debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。支持Debug、Release模式编译的程序(即该软件捕获的是exe直接运行时,抛出的信息,而不是Visual Studio调试时的),甚至支持内核程序,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 701,207
精华内容 280,482
关键字:

code什么意思view