首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

代码优化技巧·代码编写好习惯·代码规范

代码优化好习惯 减少对变量的重复计算 明确一个概念,对方法的调用,即使方法中只有一句语句,也是有消耗的,包括创建栈帧、调用方法时保护现场、调用方法完毕时恢复现场等。...,其它代码谨慎使用注释 典型的烂注释 不恰当的信息 废弃的注释 冗余注释 糟糕的注释 注释掉的代码 唯一真正好的注释是你想办法不去写的注释 不要有循规式注释,比如setter/getter注释...变量名称长短应该与其作用域对应 别害怕长名称,长而具有描述性的名称比短而令人费解的名称好 函数名称应该说明副作用,名称应该表达函数,变量或类的一切信息,请不要掩盖副作用,比如CreateAndReturnXXX...不要怕单元测试的方法名字太长或者繁琐,测试函数的名称就像注释 不要追求太高的测试覆盖率,测试代码前面90%通常比后面10%花的时间少 使用最简单的并且能够完整运用代码的测试输入 给测试函数取一个完整性的描述性名字...(SRP),类和模块只有一个修改理由 类应该只有少量的实体变量 类应该遵循依赖倒置原则 DIP(Dependency Inversion Principle),类应该依赖于抽象而不是依赖于具体细节 类中的方法越少越好

1.2K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【JS】230-迭代器与 for of的使用和原理

    ES6 规定,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性,或者说,一个数据结构只要具有 Symbol.iterator 属性,就可以认为是"可遍历的"(iterable...而且每个集合类型都有一个默认的迭代器,在 for-of 循环中,如果没有显式指定则使用默认的迭代器。...而且值得注意的是,其实 for 循环中的三个表达式中任意一个都可以被忽略,不过分号还是要写的。...,仅仅是在有 return 函数的时候执行了 return 函数而已,return 函数中返回的值其实并不生效…… 但是你不返回值或者返回一个基本类型的值的话,结果又会报错…… TypeError: Iterator...函数的返回值其实并不生效 T^T

    90141

    forEach、for...in 、 for...of

    像 Array和 Object使用内置构造函数所创建的对象都会继承自Object.prototype和String.prototype的不可枚举属性,例如 String 的 indexOf() 方法或...循环将遍历对象本身的所有可枚举属性,以及对象从其构造函数原型中继承的属性(更接近原型链中对象的属性覆盖原型属性)。...数组索引只是具有整数名称的枚举属性,并且与通用对象属性相同。不能保证for ... in将以任何特定的顺序返回索引。...for ... in循环语句将返回所有可枚举属性,包括非整数类型的名称和继承的那些。 因为迭代的顺序是依赖于执行环境的,所以数组遍历不一定按次序访问元素。...for...of循环 for...of语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句

    1.3K10

    ES6 系列之迭代器与 for of

    ES6 规定,默认的 Iterator 接口部署在数据结构的 Symbol.iterator 属性,或者说,一个数据结构只要具有 Symbol.iterator 属性,就可以认为是"可遍历的"(iterable...而且每个集合类型都有一个默认的迭代器,在 for-of 循环中,如果没有显式指定则使用默认的迭代器。...而且值得注意的是,其实 for 循环中的三个表达式中任意一个都可以被忽略,不过分号还是要写的。...而之所以这么做,就要提到迭代器的 return 方法。 引用阮一峰老师的 ECMAScript 6 入门: 遍历器对象除了具有 next 方法,还可以具有 return 方法和 throw 方法。...,仅仅是在有 return 函数的时候执行了 return 函数而已,return 函数中返回的值其实并不生效…… 但是你不返回值或者返回一个基本类型的值的话,结果又会报错…… TypeError: Iterator

    49910

    Python与人工智能——23、for循环

    for element in iterable: # 循环体代码 这里的element是在每次循环中从可迭代对象iterable中取出的一个元素。...iterable可以是列表、元组、字符串、字典、集合等可迭代的数据类型。...fruits = ['apple', 'banana', 'cherry'] for fruit in fruits: print(fruit) 这个例子中,每次循环都会从fruits列表中取出一个水果名称...如果要遍历字典的值,可以使用values()方法: 如果要同时遍历键和值,可以使用items()方法: 结合range()函数使用: range()函数常与for循环结合使用,用于生成一个整数序列。...结合 range () 函数,还能方便地进行计数循环。 在实际生产生活中,for 循环具有重要意义。在数据分析中,可以遍历数据集的每一行或每一列进行数据清洗和分析。

    10410

    Python内置函数详解【翻译自pyth

    ,而不是试图提供完整或一致性的名称集合,具体的行为在不同的版本之间会有变化。...如果有多个iterable,迭代器在最短的iterable耗尽时停止。对于函数的输入已经排列成参数元组的情况,参见itertools.starmap()。...Property对象具有可用作装饰器的getter、setter和deleter方法,用于创建property的副本,并将相应的访问器函数设置为装饰的功能。...请务必给予附加函数与原始属性相同的名称(在本例中为x)。 返回的property对象还具有对应于构造函数参数的属性fget、fset和fdel。...该函数导入模块名称,可能使用给定的globals和locals来确定如何解释包上下文中的名称。fromlist给出了应从name给出的模块导入的对象或子模块的名称。

    1.5K20

    Effective-java-读书笔记之Lambda表达式和流

    它们的实例是函数对象(function objects), 表示功能或者行为. 从JDK1.1开始, 主要的创建函数对象的行为是匿名类(anonymous class)....在Java 8中, 认为这种只有一个抽象方法的接口值得被特殊对待, 它们现在被称为函数式接口(functional interfaces), 语言允许你用lambda表达式创建这些接口的实例....提供方法重载的时候要注意, 不要给同一个方法提供函数式接口在同一个参数位置的重载(有可能会引起二义性). 比如: ExecutorService的submit方法....循坏代码块中可以return, break或continue, 抛出方法声明的受检异常; lambda中不能做这些. stream擅长的事情: 统一处理元素序列. 过滤....注意: pure function的结果只依赖于自己的输入, 不会依赖于任何mutable的状态, 也不会修改任何状态.

    40920

    python 基础内置函数表及简单介绍

    如果没有参数,则返回当前本地作用域中的名称列表。 如果对象具有名为 __dir__() 的方法,则将调用此方法,并且必须返回属性列表。...它们用于在字典查找期间快速比较字典键。比较相等的数值具有相同的散列值(即使它们具有不同的类型,就像 1 和 1.0 一样)。...> Python 不依赖于底层操作系统的文本文件概念;所有的处理都由 Python 自己完成,因此是平台无关的。...fget 是获取属性值的函数。fset 是用于设置属性值的函数。fdel 是删除属性值时会调用的函数。doc 为该属性创建一个文档字符串。...对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。

    1.3K20

    Python 内建函数大全

    bytes 是 bytearray 的不可变版本 - 它具有相同的非变异方法和相同的索引和切片行为。 因此,构造函数参数解释请参考 bytearray()。 字节对象也可以使用文字创建。...fget 是获取属性值的函数。fset 是用于设置属性值的函数。fdel 是删除属性值时会调用的函数。doc 为该属性创建一个文档字符串。...property 对象具有可用作装饰器的 getter,setter 和 deleter 方法,这些方法创建属性的副本并将相应的存取器函数设置为装饰函数。...请务必为附加函数提供与原始 property 相同的名称(当前为 x)。 返回的 property 对象也具有与构造函数参数相对应的属性 fget,fset 和 fdel。...对于许多类型,此函数尝试返回一个字符串,该字符串在传递给 eval() 时会产生一个具有相同值的对象,否则该表示是一个用尖括号括起来的字符串,其中包含对象类型的名称以及其他信息包括对象的名称和地址。

    2K30

    一文彻底搞懂Python可迭代(Iterable)、迭代器(Iterator)和生成器(Generator)的概念

    0x00 可迭代(Iterable) 简单的说,一个对象(在Python里面一切都是对象)只要实现了只要实现了__iter__()方法,那么用isinstance()函数检查就是Iterable对象;...集合或序列类型(如list、tuple、set、dict、str) 文件对象 在类中定义了__iter__()方法的对象,可以被认为是 Iterable对象,但自定义的可迭代对象要能在for循环中正确使用...所以当一个对象能够在for循环中运行,但不一定是Iterable对象。...修改后的类是可以被iter()函数调用的,即也可以在for循环中使用 it = IterObj() print(isinstance(it, Iterable)) # true...()函数可以将一个实现了__getitem__()方法的对象转成迭代器对象,也可以在for循环中使用,但是如果用isinstance()方法来检测时,它不是一个可迭代对象。

    6.1K41

    Python数据容器:集合

    前言在 Python 中,数据容器是组织和管理数据的重要工具,集合作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了集合的定义、常用操作以及遍历方法。...定义字面量:{元素1,元素2,元素3,元素4,...}定义变量:变量名称 = {元素1,元素2,元素3,元素4,…}定义空元组:变量名称 =set()②特点:可容纳多个数据可容纳不同类型的数据(混装)可修改...:对比集合1和集合2,在集合1内删除和集合2相同的元素,集合1被修改,集合2不变。...', 'best',请按如下要求操作:1.定义一个空集合2.通过for循环遍历列表3.在for循环中将列表的元素添加至集合4.最终得到元素去重后的集合对象,并打印输出my_list = ['新闻', '...in my_list: # 在for循坏中将列表元素添加至集合 my_set.add(element)print(f"列表的内容为{my_list}")print(f"通过for循坏得到的集合为

    9331

    C++从入门到精通——范围for的使用

    具体使用方式如下: 在Python中,for循环的基本语法如下: for item in iterable: # 执行代码块 其中,item是循环变量,用于依次遍历iterable对象中的元素。...::冒号用于标志代码块的开始。 # 执行代码块:在循环中要执行的代码块,可以包含一个或多个语句。 在每次循环中,item会依次取iterable中的元素,然后执行一次代码块,直到遍历完所有元素为止。...在for循环中,循环变量是一个局部变量,只在循环体中有效。循环变量的作用是控制循环的次数。...在每次循环中,x将依次取数组arr中的每个元素,然后输出到屏幕上。...迭代器一般具有以下操作: 通过*运算符获取当前迭代器指向的元素 通过++运算符将迭代器向后移动到下一个元素 通过==运算符判断两个迭代器是否相等 通过!

    16810

    Python指南:组合数据类型

    该函数的第一个参数是想要创建的自定义元组数据类型的名称,第二个参数是一个字符串,其中包含使用空格分隔的名称,每个名称代表该元祖数据类型中的一项。该函数返回一个自定义的类,可用于创建命名的元组。...创建默认字典时,我们可以传入一个工厂函数,这样就会为遗失的键创建默认值。...4、组合数据类型的迭代与复制 4.1 迭代子、迭代操作与函数 iterable数据类型每次返回其中的一个数据项。...) 通常用于for… in 循环中,提供一个(index, item)元组序列,其中索引其实值为0或start len(x) 返回x的“长度” max(i, key) 返回iterable i中的最大的项...zip(i1, …, iN) 返回元组的迭代子,使用迭代子i1到iN 数据项返回的顺序依赖于底层的iterable。

    2.7K10
    领券