effective专题

[译]Effective Kotlin系列之考虑使用原始类型的数组优化性能(五)

翻译说明: 原标题: Effective Kotlin: Consider Arrays with primitives for performance critical processing 原文地址: https://blog.kotlin-academy.com/effective-kotlin-use-sequence-for-bigger-collections-with-more-

Effective Java 学习笔记--36-38条 枚举类型

目录 枚举之前--int常量 枚举类型 枚举类型的特性 自定义方法和域的设置 实例的统一行为 实例的不同行为 switch语句 抽象方法 公共接口 策略枚举 用实例域代替默认序数 枚举集合 EnumSet EnumMap 枚举类型用于定义一组固定的命名常量,在枚举类型中定义的每一个枚举常量都是枚举类型的一个实例,而且这个实例是不可变的。 枚举之前--int常

Effective C++读书笔记(条款18-23)

(四).设计与声明 ____________________________________________________________________________________________________________________________________ 条款18:让接口容易被使用,而不容易被误用 #1.导入新类型可以让接口不易被误用,以函数替换对象则可以保

Effective C++读书笔记(条款11-17)

继续上一篇... (二).构造/析构/赋值运算 ____________________________________________________________________________________________________________________________________ 条款11:在operator= 中处理 “自我赋值" #1.确保当对

Effective C++读书笔记(条款1-10)

不得不说,Effective C++确实是一本C++进阶的好书,刚浏览完第二遍, 现对其做一个大体性的总结 ,并进行适当的展开,作为以后C++参考复习之用。 (一).让自己习惯C++ _____________________________________________________________________________________________________

【Effective C++】第四章 设计与声明(上)

第四章 设计与声明 条款18:让接口容易被正确使用,不易被误用 考虑客户可能做出什么样的错误。除非有好理由,否则应该尽量令你的types的行为与内置types一致。 tr1::shared_ptr有一个特别好的性质是:它会自动使用它的“每个指针专属的删除器”,因而消除另一个潜在的客户错误:所谓的“cross-DLL problem”。这个问题发生于“对象在动态连接程序库(DLL)中被new创建

Effective-Java-Chapter10-异常

准则一 仅在确有异常条件下使用异常 顾名思义,异常只适用于确有异常的情况;它们不应该用于一般的控制流程。 // Do not use this hideous code for iteration over a collection!try {Iterator<Foo> i = collection.iterator();while(true) {Foo foo = i.next();}}

More Effective C++ 条款04:非必要不提供默认构造函数

所谓默认构造函数,就是不给任何变量,就可以给调用(无参或参数为默认值)。 基本准则:凡可以“合理地从无到有生成对象”的类,都应该包含默认构造函数,而“必须有某些外来信息才能生成对象”的类,则不必拥有默认构造函数。 但如果类缺乏一个默认构造函数,当你使用这个类时便会有某些限制。 考虑下面这个针对公司仪器而设计的class,在其中,仪器识别码是一定得有的一个构造参数: class Equipm

Effective C++ 改善程序与设计的55个具体做法笔记与心得 2

二. 构造/析构/赋值运算 5. 了解C++默默编写并调用哪些函数 唯有当这些函数被调用,他们才会被编译器创建出来。 请记住: ‌‌‌‌  编译器可以暗自为class创建default构造函数、copy构造函数、copy assignment操作符,以及析构函数。 6. 若不想使用编译器自动生成的函数,就该明确拒绝 请记住: ‌‌‌‌  为驳回编译器自动(暗自)提供的机能,可将相应的成员

Effective C++ 改善程序与设计的55个具体做法笔记与心得 1

一. 让自己习惯C++ 1. 视C++为一个语言联邦 2. 尽量以const, enum, inline替换#define #define CALL_WITH_MAX(a,b) f((a) > (b) ? (a) : (b))int a = 5 , b = 0;CALL_WITH_MAX(++a,b); // a = 6, b = 0 CALL_WITH_MAX(++a,b+10); //

{Effective Java} Chap 2 创建和销毁对象

This chapter concerns creating and destroying objects: when and how to create them, when and how to avoid creating them, how to ensure they are destroyed in a timely manner, and how to manage any

effective C++条款27,28

27. 尽量少做转型动作 c++的设计目标之一是,保证“类型错误”绝不可能发生。即,如果我们的程序能顺利的通过编译,那么就意味着它一定不会在任何对象身上出现任何不安全的操作。 在大部分情况下,转型会破坏我们原有的类型系统,有可能会产生一些很隐晦的错误,所以我们需要慎重选择转型操作,尽量通过设计来避免转型 类型转换的底层工作 任何的一次类型转换,编译器都会编译出运行时期执行的码。 i

《effective c++》读书笔记4

条款41:了解隐式接口和编译期多态 n  classes和templates都支持接口和多态 n  对classes而言接口是显式的,以函数签名为中心,多态则是通过虚函数发生于运行期。 n  对templates参数而言,接口是隐式的,奠基于有效表达式,多态则是通过template具现化和函数重载解析发生于编译器。 条款42:了解typename的双重意义 n  声明模板参数,前缀关键字

《effective c++》读书笔记3

条款26:尽可能延后变量定义式的出现时间 std::string encryptPassword(conststd::string &password) { std::string encrypted; encrypted=password; encrypt(encrypted); return encrypted; } 这样定义即初始化encrypted付出的代价是一个构造函数和

《effective c++》读书笔记2

条款13:以对象管理资源 使用RAII,获得资源后立刻放进管理对象,管理对象运用析构函数确保资源被释放。 为防止资源泄露,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源。 两个常被使用的RAII类是tr1::shared_ptr和tr1::auto_ptr。前者通常是较佳选择,因为其拷贝行为比较直观。若选择auto_ptr,复制动作会使被复制物指向null.  条款14

《effective c++》读书笔记1

条款1:视C++为一个语言联邦 C++包括这四个部分: l  C l  Object-Oriented C++ l  Template C++ l  STL  n  C++高效编程守则视状况而变化,取决于你使用C++的哪一部分  条款2:尽量以const,enum,inline替换#define 下面这个宏夹带着宏实参,调用函数f: #define CALL_WITH_MAX (

Effective Java 2 遇到多个构造器参数时要考虑使用构建器

第2个经验法则:用遇到多个构造器参数时要考虑使用构建器(consider a builder when faced with many constructor parameters) 上一条讨论了静态工厂相对于构造器来说有五大优势。但静态工厂和构造器有个共同的局限性:它 们都不能很好地扩展到大量的可选参数。 对于需要多参数的类,应该用哪种构造器或者静态工厂来编写呢? 接下来,我将通过Java代

Effective Java 1 用静态工厂方法代替构造器

知识点上本书需要会Java语法和lang、util、io库,涉及concurrent和function包。 内容上主要和设计模式相关,代码风格力求清晰+简洁,代码尽量复用,组件尽量少依赖,错误尽早发现。 第1个经验法则:用静态工厂方法代替构造器(consider static factory methods instead of constructors) 下面是Boolean的静态工厂

Effective STL:第二部分 容器

第二部分 vector和容器 第十三条:vector和string优先于动态分配的数组 当你决定用new来分配内存时,将承担以下责任: n  你必须确保以后会有人调用delete来删除所分配的内存,否则将导致资源泄露。 n  你必须确保调用了正确的delete形式。比如单个对象调用delete;分配了数组,则调用delete[]。 n  你必须确保只delete了一次

Effective STL第一部分: 容器

第一条:慎重地选择容器 C++提供了以下一些容器: n  标准STL序列容器:vector、string、deque和list。 n  标准STL关联容器:set、multiset、map和multimap。 n  非标准序列容器:slist和rope。slist是一个单向链表,rope本质上是一个“重型”string。 n  非标准关联容器:hash_set、hash_multiset

Effective STL 读书笔记

最近有闲,在工作之余重读了《effective STL》一书,并通过 twitter 记了一下笔记,今天整理收集到这里。 twitter 真的非常适合记读书笔记,哈哈,以后要好好地发扬。另,我的手机还是很老的 UIQ 3.0 的索爱手机,有没有达人推荐一些上推的应用程序?谢谢。 ==================================== #estl 第50条:熟悉与STL相关的w

Effective C++ 8. 定制 new 和 delete

条款49: 了解new-handler的行为 为了指定这个"用以处理内存不足"的函数,客户必须调用 set_new_handler, 那是声明于 <new>的标准程序库函数。 namespace std {      typedef void (*new_handler)  {};      new_handler set_new_handler(new handl

Effective C++ 7.0 模板与泛型编程

条款41   了解隐式接口和编译器多态 1. classes 和 templates 都支持 接口 和多态 2. 对 classes 而言接口是 显式 的,以函数签名为中心, 多态则是通过 virtual 函数发生于运行期间。 3. 对 template 参数而言, 接口是隐式的, 奠基于有效的表达式。    多态则是通过  template具现化 和  函数重载解

Effective C++ 6.继承与面向对象设计

条款32:确定你的public继承塑模出is-a关系     以C++进行面向对象编程,最重要的一个规则是:public inheritance(公有继承)意味is-a(是一种)的关系。     如 果你令class D以public形式继承class B,你便是告诉C++编译器(以及你的代码读者)说,每一个类型为D的对象同时也是一个类型为B的对象,反之不成立。你的意思是B比D表现出更一般化得概

Effective C++ 5.实现

条款26:尽可能延后变量定义式的出现时间     只要你定义了一个变量而其类型带有一个构造函数或析构函数,那么当程序的控制流到达这个变量定义式时,你便得承受构造成本;当这个变量离开其作用域时,你便得承受析构成本。即使这个变量最终并为被使用,仍需耗费这些成本,所以应该尽量避免这种情形。     std::string encryptPassword(const std::string& pass

EffectiveJava之HashCode学习笔记

HashCode 生成方法 Step1.int result=任意整数(奇素数如31); Step2. 计算hashcode int类型计算方法: result = 31 * result + int类型的数值 对于boolean类型计算方法: result = 31 * result + (b?1:0) //b为boolean类型数值 对于byte/char/short/int/类型计算方法: