代码风格

设计模式之美学习(四):面向对象相比面向过程有哪些优势?面向过程真的过时了吗?

强颜欢笑 提交于 2019-12-06 03:28:25
除了面向对象之外,被大家熟知的编程范式还有另外两种,面向过程编程和函数式编程。面向过程这种编程范式随着面向对象的出现,已经慢慢退出了舞台,而函数式编程目前还没有被广泛接受。 在工作中,很多人搞不清楚面向对象和面向过程的区别,总以为使用面向对象编程语言来做开发,就是在进行面向对象编程了。而实际上,他们只是在用面向对象编程语言,编写面向过程风格的代码而已,并没有发挥面向对象编程的优势。这就相当于手握一把屠龙刀,却只是把它当作一把普通的刀剑来用,相当可惜。 什么是面向过程编程与面向过程编程语言? 我们可以对比着面向对象编程和面向对象编程语言这两个概念,来理解面向过程编程和面向过程编程语言。还记得之前是如何定义面向对象编程和面向对象编程语言的吗?让我们一块再来回顾一下。 面向对象编程是一种编程范式或编程风格。它以类或对象作为组织代码的基本单元,并将封装、抽象、继承、多态四个特性,作为代码设计和实现的基石 。 面向对象编程语言是支持类或对象的语法机制,并有现成的语法机制,能方便地实现面向对象编程四大特性(封装、抽象、继承、多态)的编程语言。 类比面向对象编程与面向对象编程语言的定义,对于面向过程编程和面向过程编程语言这两个概念,给出下面这样的定义。 面向过程编程也是一种编程范式或编程风格。它以过程(可以为理解方法、函数、操作)作为组织代码的基本单元,以数据(可以理解为成员变量、属性

设计模式之美学习(五):哪些代码设计看似是面向对象,实际是面向过程的?

牧云@^-^@ 提交于 2019-12-06 03:26:36
常见的编程范式或者说编程风格有三种,面向过程编程、面向对象编程、函数式编程,而面向对象编程又是这其中最主流的编程范式。现如今,大部分编程语言都是面向对象编程语言,大部分软件都是基于面向对象编程这种编程范式来开发的。 不过,在实际的开发工作中,总以为把所有代码都塞到类里,自然就是在进行面向对象编程了。实际上,这样的认识是不正确的。有时候,从表面上看似是面向对象编程风格的代码,从本质上看却是面向过程编程风格的。 哪些代码设计看似是面向对象,实际是面向过程的? 在用面向对象编程语言进行软件开发的时候,我们有时候会写出面向过程风格的代码。有些是有意为之,并无不妥;而有些是无意为之,会影响到代码的质量。 1. 滥用 getter 、 setter 方法 它违反了面向对象编程的封装特性,相当于将面向对象编程风格退化成了面向过程编程风格。通过下面这个例子来给你解释一下这句话。 public class ShoppingCart { private int itemsCount; private double totalPrice; private List<ShoppingCartItem> items = new ArrayList<>(); public int getItemsCount() { return this.itemsCount; } public void

Python代码编码规范

为君一笑 提交于 2019-12-04 20:30:30
目录 1. Introduction 介绍 2. A Foolish Consistency is the Hobgoblin of Little Minds 尽信书,则不如无书 3. Code lay-out 代码布局 3.1 Indentation 缩进 3.2 Tabs or Spaces? 制表符还是空格? 3.3 Maximum Line Length 行的最大长度 3.4 Should a line break before or after a binary operator? 在二元运算符之前应该换行吗? 3.5 Blank Lines 空行 3.6 Source File Encoding 源文件编码 3.7 Imports 导入 3.8 Module level dunder names 模块级的“呆”名 4. String Quotes 字符串引号 5. Whitespace in Expressions and Statements 表达式和语句中的空格 5.1 Pet Peeves 不能忍受的事情 5.2 Other Recommendations 其他建议 6. Comments 注释 6.1 Block Comments 块注释 6.2 Inline Comments 行内注释 6.3 Documentation Strings 文档字符串 7.

Python5种代码维护工具

二次信任 提交于 2019-12-04 01:04:58
原文地址: https://cloud.tencent.com/developer/article/1365969 随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始就没有建立过那些标准)。然而,在代码库中保持一致的代码风格和测试标准能够显著减轻维护的压力,也能确保新的开发者能够快速了解项目的情况,同时能更好地全程保持应用程序的质量。 使用外部库来检查代码的质量不失为保护项目未来可维护性的一个好方法。以下会推荐一些我们最喜爱的检查代码(包括检查 PEP 8 和其它代码风格错误)的库,用它们来强制保持代码风格一致,并确保在项目成熟时有一个可接受的测试覆盖率。 检查你的代码风格 PEP 8 是 Python 代码风格规范,它规定了类似行长度、缩进、多行表达式、变量命名约定等内容。尽管你的团队自身可能也会有稍微不同于 PEP 8 的代码风格规范,但任何代码风格规范的目标都是在代码库中强制实施一致的标准,使代码的可读性更强、更易于维护。下面三个库就可以用来帮助你美化代码。 1、 Pylint Pylint 是一个检查违反 PEP 8 规范和常见错误的库。它在一些流行的编辑器和 IDE 中都有集成,也可以单独从命令行运行。 执行 pip install pylint 安装 Pylint 。然后运行 pylint [options] path/to/dir 或者

c# 编码风格

匿名 (未验证) 提交于 2019-12-03 00:40:02
此内容为copy别人的,仅供自己参看。如有意见,麻烦通知我,谢谢 1. C# 代码风格要求 1.1注释 类型、属性、事件、方法、方法参数, 根据需要 添加注释。 如果类型、属性、事件、方法、方法参数的名称已经是自解释了, 不需要 加注释;否则需要添加注释。 当添加注释时,添加方式如下图所示: 1.2 类型(类、结构、委托、接口)、字段、属性、方法、事件的命名 优先考虑英文,如果英文没有合适的单词描述,可以使用拼音,使用中文是不符合要求的。 唯一可以使用中文的地方是枚举的枚举项,枚举项实际已经不属于本节标题的范畴了。这里只是放到一起说明,如下图所示: 1.3 不使用缩写 所有类型、方法、参数、变量的命名不得使用缩写,包括大家熟知的缩写,例如msg。 1.4 代码使用半展开 第一步,打开Visual Studio,进入“工具”,“选项...”,如下图所示: 第二步,进入“文本编辑器”,“C#”,“格式设置”,“新行”,取消掉右侧所有复选框中的对号,如下图所示: 第三步,点击“确定”,完成设置。 1.5 使用Tab作为缩进,并设置缩进大小为4 第一步,打开Visual Studio,进入“工具”,“选项...”,如下图所示: 第二步,进入“文本编辑器”,“C#”,“制表符”,如下图所示,设置制表符。 第三步,点击“确定”,完成设置。 1.6 一个.cs源文件至多定义两个类型

深入浅出eslint――关于我学习eslint的心得

匿名 (未验证) 提交于 2019-12-03 00:15:02
本文转载于: Գ2048 https://www.mk2048.com/blog/blog.php?id=hh1h2c2cbb 很多人在引入eslint后,发现项目中出现了很多错误提示,看着让人的强迫症都犯了,于是就放弃了使用。可小编在这却还是要说在项目中要用到eslint,尤其是在项目一开始构建搭建的时候,就约定好,就不会再出现多人协助代码不统一,开发看着比较恶心,也减少在运行时才知道代码出现问题的情况,保证写出语法正确、风格统一的代码。最后舍弃一部分灵活性换取更高的稳定性和可维护性。 一、关于eslint ESLint属于一种QA工具,是一个ECMAScript/JavaScript语法规则和代码风格的检查工具,可以用来保证写出语法正确、风格统一的代码。 ESLint旨在完全可配置,它的目标是提供一个插件化的javascript代码检测工具。这意味着您可以关闭每个规则,只能使用基本语法验证,或者混合并匹配捆绑的规则和自定义规则,使ESLint完美的适用于您的项目。 【ESlint 中文官方网站】: http://eslint.cn/ 可以查看官网: https://eslint.org/ 二、为什么要用eslint呢? 多人参与的项目中,经常会多人交叉编辑多个文件。这就导致了各个文件中充斥着各种编码风格。最常见的就有

JS 的5个不良编码习惯

匿名 (未验证) 提交于 2019-12-02 23:57:01
1.不要使用隐式类型转换 JavaScript是一种松散类型的语言。如果使用得当,这是一个好处,因为它给你带来了灵活性。 + - * / == === )在处理不同类型的操作数时会进行隐式转换。 if ( condition ){...} while ( condition ){...} 隐式地将条件转换为布尔值。 下面的示例依赖于类型的隐式转换,这种有时候会让人感到很困惑: console . log ( "2" + "1" ); // => "21" console . log ( "2" - "1" ); // => 1 console . log ( '' == 0 ); // => true console . log ( true == []); // -> false console . log ( true == ![]); // -> false 过度依赖隐式类型转换是一个坏习惯。首先,它使你的代码在边缘情况下不太稳定。其次,增加了引入难以重现和修复的bug的机会。 现在咱们实现一个获取对象属性的函数。如果属性不存在,函数返回一个默认值 function getProp ( object , propertyName , defaultValue ) { if (! object [ propertyName ]) { return defaultValue ;

『嗨威说』算法设计与分析 - 第一章作业整理(编码规范 / 数学之美 / 未来计划)

匿名 (未验证) 提交于 2019-12-02 23:57:01
本文索引目录 : 一、编码规范的选择与养成 二、《数学之美》 三、本学期算法学习的计划安排 一、编码规范的选择与养成:   与搭档可欣达成共识,在接下来的算法学习和团队制作过程中,遵循以下编码规范:     https://www.cnblogs.com/linuxAndMcu/p/11303688.html   并根据阅读筛选合适的编码规则如下:    (1)版权和版本的声明:   版权和版本的声明位于头文件的开头,主要内容有: 1)版权信息; 2)文件名称,标识符,摘要; 3)当前版本号,作者/修改者,完成日期; 4)版本历史信息 。 /* * Copyright (c) 2019,google * All rights reserved. * * 文件名称:fileName.h * 摘 要:简要描述本文件的功能和用法 * * 当前版本:1.1 * 作 者:输入作者(或修改者)名字(薛海威 张可欣) * 完成日期:2019 年 9 月 2 日 * * 取代版本:1.0 * 原作者 :输入原作者(或修改者)名字 (嗨威) * 完成日期:2019 年 9 月 3 日 */    (2)头文件的结构:   【规则 001】用 #include <filename.h> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。   【规则 002】用 #include

《Conditional BERT Contextual Augmentation》

匿名 (未验证) 提交于 2019-12-02 23:43:01
实话说,这个文章我20分钟就可以看完。 LSTM-RNN 和 CNN模型,还可以用在迁移模型上。 这个东西发了个ICCS,反正我是没有听说过这个会议的。 应该是在这个会议上灌了个水。 这他妈的水啊。 在风格迁移上做了手脚。面对风格迁移的时候,巴拉巴黎,又操作了一通。 数据漂亮的有些不像话。 而且代码还没有开源。 虽然它这个代码也没有开源的意义。(但依旧没有开源) 真的水啊,大海。 文章来源: https://blog.csdn.net/qq_29134801/article/details/92401709

如何保障前端项目的代码质量

感情迁移 提交于 2019-12-02 19:50:43
本文转载于: 猿2048 网站➫ https://www.mk2048.com/blog/blog.php?id=ckik00kib 对于中大型前端项目,项目规范与代码质量尤为重要。当功能需求变更或需要重构时,随心所欲的(糟糕的)代码可能带来比重新开发还麻烦的问题。 1 前端项目代码中的常见问题 1.1 凌乱的书写风格,阅读体验差 这个问题不用作过多阐述,想必接手过他人代码的同学,多少都有些体会。简单来说,太过随意的代码会让强迫症患者难以容忍,难以阅读理解的代码有时甚至不如推倒重来。 1.2 低质量的编码,bug 不断 什么样的代码是低质量或高质量的?好的代码可能会让你如读小说一般被吸引,糟糕的代码会让你看一眼就不想继续、甚至看半天而不知所云。 有人可能认为初级程序员才会有这种问题,其实不然,一些工作经验两三年的同学写的代码依然如此。对于一些个人自学意识不够积极、没有团队规范性指引的同学,很容易习惯成“学习半年、然后重复三年无长进”的情况。 拿出来你可能不太愿意相信,下面这些例子即来源于真实项目。你能尽可能地找出其中存在的各种问题吗? 图1 图2 图3 图4 图5 图6 图7 以上只是截取的一些很简短的列子,那么涉及大块复杂逻辑的地方会是怎样的,试试发挥一下你的想象力。 1.3 功能不分离,逻辑糅合,难以阅读和理解 这种问题其实是非常普遍的。 一个函数几百行、一个文件数千行