- 博客(40)
- 资源 (2)
- 收藏
- 关注
翻译 Google C++每周贴士 #45: 少用Flags,尤其是在库代码中
(原文链接:https://abseil.io/tips/45 译者:clangpp@gmail.com)每周贴士 #45: 少用Flags,尤其是在库代码中最初发布于:2013-06-03作者:Titus Winters短链接:abseil.io/tips/45“我真正想要的,是用不可静态预测的全局变量控制我代码的行为,其使用日志没有完全被记录,且移走它非常费劲。”——从来没有人在产品代码中普遍使用flags,尤其是在库里面,是一个错误。如果不是真的必要,不要使用flags。就这样,勿谓言
2021-09-14 12:37:43 541
翻译 Google C++每周贴士 #144: 关联容器的混杂查询
(原文链接:https://abseil.io/tips/144 译者:clangpp@gmail.com)每周贴士 #144: 关联容器的混杂查询最初发布于:2018-03-23作者:Samuel Benzaquen更新于:2020-04-06短链接:abseil.io/tips/144介绍关联容器为每个元素关联了一个键(key)。在容器中插入或查询元素需要一个等值的键。通常情况下,容器要求键是特定的类型,这可能导致调用处的低效率,因为需要在近似的类型之间做转换(比如std::strin
2021-08-31 13:13:15 321
翻译 Google C++每周贴士 #136: 无序容器
(原文链接:https://abseil.io/tips/136 译者:clangpp@gmail.com)每周贴士 #136: 无序容器最初发布于:2017-06-23作者:Matt Kulukundis更新于:2020-04-06短链接:abseil.io/tips/136“Sometimes, when the material is really good, you put expectations on yourself to make it the best possible s
2021-08-31 12:27:35 2921
翻译 Google C++每周贴士 #153: 别用using指示
(原文链接:https://abseil.io/tips/153 译者:clangpp@gmail.com)每周贴士 #153: 别用using指示最初发布于:2018-07-17作者:Roman Perepelitsa 和 Ashley Hedberg更新于:2020-04-06短链接:abseil.io/tips/153在我看来using指示就是定时炸弹,不论是对它处理的部分还是类型系统。 – Ashley Hedberg 带着对Warren Buffett的歉意长话短说(tl;dr)
2021-08-28 13:50:11 203
翻译 Google C++每周贴士 #147: 负责任地使用穷举`switch`
(原文链接:https://abseil.io/tips/147 译者:clangpp@gmail.com)每周贴士 #147: 负责任地使用穷举switch最初发布于:2018-04-25作者:Jim Newsome更新于:2020-04-06短链接:abseil.io/tips/147介绍指定了编译选项-Werror以后,在switch一个enum类型数值的语句里,如果某个enum的枚举值没有对应的case,且没有default标签,那么编译就会失败。这通常被称作 穷举 或者 无默认值
2021-08-17 14:39:18 174
翻译 Google C++每周贴士 #103: Flag是全局变量
(原文链接:https://abseil.io/tips/103 译者:clangpp@gmail.com)每周贴士 #103: Flag是全局变量作者:Matt Armstrong短链接:abseil.io/tips/103在.cc文件的全局作用域定义flag。在相应的.h文件里声明之(最多一次)。为什么要在头文件中声明东西?对我们大部分人来说,使用头文件是本能反应,所以我们也许忘记了它们为什么被使用:在头文件中声明东西,可以使其很容易被其他地方#include。整个程序看到的都是同样
2021-08-10 12:53:47 663
翻译 Google C++每周贴士 #168: `inline`变量
(原文链接:https://abseil.io/tips/168 译者:clangpp@gmail.com)每周贴士 #168: inline变量最初发布于:2019-09-12作者:James Dennett更新于:2020-04-06短链接:abseil.io/tips/168C++17提供的inline变量提供了一种在头文件中定义字符串常量的安全方式:inline constexpr absl::string_view kHelloWorld = "Hello World.";c
2021-08-10 12:18:45 226
翻译 Google C++每周贴士 #161: 局部变量有好有坏
(原文链接:https://abseil.io/tips/161 译者:clangpp@gmail.com)每周贴士 #161: 局部变量有好有坏最初发布于:2019-04-16作者:James Dennett更新于:2020-04-06短链接:abseil.io/tips/161We may freak out globally, but we suffer locally. – Jonathan Franzen概要局部变量挺好的,但是容易被滥用。通过将其限制在它能提供确切好处的地方,
2021-08-03 14:42:19 261
翻译 Google C++每周贴士 #166: 你不是真正的复制
(原文链接:https://abseil.io/tips/166 译者:clangpp@gmail.com)每周贴士 #166: 你不是真正的复制最初发布于:2019-08-28作者:Richard Smith更新于:2020-04-06短链接:abseil.io/tips/166Entia non sunt multiplicanda praeter necessitatem." (“Entities should not be multiplied without necessity”)
2021-07-27 13:16:19 152
翻译 Google C++每周贴士 #146: 默认与值初始化
(原文链接:https://abseil.io/tips/146 译者:clangpp@gmail.com)每周贴士 #146: 默认与值初始化最初发布于:2018-04-19作者:Dominic Hamon更新于:2020-04-06短链接:abseil.io/tips/146“通往成功的路总是在施工”——莉莉·汤普琳长话短说(TL;DR)为安全性和可读性起见,你应该假设标量对象(scalar objects)在被显式赋值之前都没有初始化为合理值。使用初始化器可以确保标量值被初始化成了
2021-07-20 13:26:05 275
翻译 Google C++每周贴士 #177: 可赋值性与数据成员类型
(原文链接:https://abseil.io/tips/177 译者:clangpp@gmail.com)每周贴士 #177: 可赋值性与数据成员类型最初发布于:2020-04-06作者:Titus Winters更新于:2020-04-06短链接:abseil.io/tips/177做类型的实现,先要决定类型的设计。先考虑API,后考虑实现细节。这件事的一个常见例子是,类型的可赋值性与数据成员限定符之间的权衡。决定如何呈现数据成员设想你正在写一个City类,然后正在探讨如何呈现它的数
2021-07-18 08:14:20 146
翻译 Google C++每周贴士 #172: 指派初始化器
(原文链接:https://abseil.io/tips/172 译者:clangpp@gmail.com)每周贴士 #172: 指派初始化器最初发布于:2019-12-11作者:Aaron Jacobs更新于:2020-04-06短链接:abseil.io/tips/172指派初始化器是C++20中的一种语法,以紧凑、易读、易维护的方式初始化结构体内容。为了取代繁复的struct Point { double x; double y; double z;};Point
2021-07-13 13:28:43 360
翻译 Google C++每周贴士 #171: 别用哨兵值
(原文链接:https://abseil.io/tips/171 译者:clangpp@gmail.com)每周贴士 #171: 别用哨兵值最初发布于:2019-11-08作者: Hyrum Wright更新于:2020-04-06短链接:abseil.io/tips/171哨兵值是指在特定上下文下有特别含义的值。例如,考虑如下API:// 返回账户余额,如果账户已关闭则返回-5。int AccountBalance();除了-5,每个int的值都可以是AccountBalance的
2021-07-13 12:38:06 293
翻译 Google C++每周贴士 #175: C++14和C++17里对字面值常量的改变
(原文链接:https://abseil.io/tips/175 译者:clangpp@gmail.com)每周贴士 #175: C++14和C++17里对字面值常量的改变最初发布于:2021-01-30作者: James Dennett更新于:2020-04-06短链接:abseil.io/tips/175“唯一不变的东西就是变化”——梅莉莎·埃瑟里奇概述C++现在有了一些特性,使得数字字面值更易读了。整数字面值可以被写作二进制了(0b00101010),正如十进制(42),十六进制
2021-07-07 13:44:05 175
翻译 Google C++每周贴士 #163: 传递`absl::optional`参数
(原文链接:https://abseil.io/tips/163 译者:clangpp@gmail.com)每周贴士 #163: 传递absl::optional参数最初发布于:2019-07-11作者:Ian Eldred Pudney更新于:2020-04-06短链接:abseil.io/tips/163空值真的是十亿美元的错误吗?问题比方说你需要实现一个函数,接收一个可能存在也可能不存在的参数。你可能禁不住去用现代的,闪瞎狗眼的absl::optional。但是吧,如果这个对象大到
2021-07-07 12:31:39 3175
翻译 Google C++每周贴士 #140: 常量:安全用法
(原文链接:https://abseil.io/tips/140 译者:clangpp@gmail.com)每周贴士 #140: 常量:安全用法最初发布于:2017-12-08作者:Matt Armstrong更新于:2020-05-06短链接:abseil.io/tips/140C++里表达常量最好的方式是什么?你也许知道这个词儿在英语里是什么意思,但在代码里却很容易被错误地表达。这里我们先定义几个核心概念,然后探讨一系列安全技巧。如果你还好奇的话,我们会接着聊聊容易弄错的情况细节,然后介
2021-06-30 14:53:31 317
翻译 Google C++每周贴士 #5: 消逝的演出
(原文链接:https://abseil.io/tips/5 译者:clangpp@gmail.com)每周贴士 #5: 消逝的演出最初发布于:2012-06-26更新于:2020-06-01短链接:abseil.io/tips/5“Don’t know what you got till it’s gone.” --Cinderella“直到失去之后才追悔莫及”——灰姑娘乐队有时候,为了正确地运用C++的库,你既需要理解库本身,又需要理解这门语言。那么……下面代码中的问题是什么?//
2021-06-22 13:28:42 143
翻译 Google C++每周贴士 #116: 如何存储指向参数的引用
(原文链接:https://abseil.io/tips/116 译者:clangpp@gmail.com)每周贴士 #116: 如何存储指向参数的引用最初发布于:2016-05-26作者:Alex Pilkiewicz更新于:2020-06-01短链接:abseil.io/tips/116From painting to image, from image to text, from text to voice, a sort of imaginary pointer indicates,
2021-06-15 13:11:20 168
翻译 Google C++每周贴士 #187: std::unique_ptr必须被移动
(原文链接:https://abseil.io/tips/187 译者:clangpp@gmail.com)每周贴士 #186: std::unique_ptr必须被移动最初发布于:2020-11-05作者:Andy Soffer更新于:2020-11-05短链接:abseil.io/tips/187如果你说第一幕中有个std::unique_ptr挂在墙上,那么在第二幕或者第三幕中它必须被移动,不然就没必要挂在那。——对不住啦契诃夫std::unique_ptr是用来表达所有权转移的。如
2021-06-12 13:25:17 285
翻译 Google C++每周贴士 #186: 最好把函数放在匿名命名空间里
(原文链接:https://abseil.io/tips/186 译者:clangpp@gmail.com)每周贴士 #186: 最好把函数放在匿名命名空间里最初发布于:2020-11-05作者:James Dennett 和 Jason Rennie更新于:2021-11-05短链接:abseil.io/tips/186“Everything should be made as simple as possible, but no simpler.” ~ RogerSessions’s
2021-06-11 13:15:45 448 1
翻译 Google C++每周贴士 #77: 临时变量,移动,和复制
(原文链接:https://abseil.io/tips/77 译者:clangpp@gmail.com)每周贴士 #77: 临时变量,移动,和复制最初发布于:2014-07-09作者:Titus Winters更新于:2017-10-20短链接:abseil.io/tips/77我们正在尝试给语言专家以外的人解释清楚C++11会怎样改变代码世界,因此在“什么时候发生复制?”系列中又增加了一篇文章。这也是更广泛的尝试之中的一部分,试图用一套更简单的规则简化C++中的变量复制规则。你会数到2
2021-05-25 13:07:26 278
翻译 Google C++每周贴士 #165: 带初始化器的`if`和`switch`语句
(原文链接:https://abseil.io/tips/165 译者:clangpp@gmail.com)每周贴士 #165: 带初始化器的if和switch语句最初发布于:2019-08-17作者:Thomas Köppe更新于:2020-01-17短链接:abseil.io/tips/165如果你用不到条件控制流程,那可以到此为止了。一个新语法C++17 允许 if和switch语句包含初始化器:if (init; cond) { /* ... */ }switch (init
2021-05-18 13:36:40 172
翻译 Google C++每周贴士 #181: 访问StatusOr<T>里的值
(原文链接:https://abseil.io/tips/76 译者:clangpp@gmail.com)每周贴士 #181: 访问StatusOr<T>里的值最初发布于:2020-07-09作者:Michael Sheely更新于:2020-09-02短链接:abseil.io/tips/181StatusOr的可读性(StatusOr<Readability>):你不需要做选择!当需要访问absl::StatusOr<T>里的对象的时候,我们应该
2021-05-12 13:49:13 1891
翻译 Google C++每周贴士 #49: 参数依赖查找
(原文链接:https://abseil.io/tips/49 译者:clangpp@gmail.com)每周贴士 #49: 参数依赖查找最初发布于:2013-07-14“…whatever disappearing trail of its legalistic argle-bargle one chooses to follow…” –Antonin Scalia, U.S. v W...
2021-05-05 13:08:08 345
翻译 Google C++每周贴士 #76: 使用absl::Status
(原文链接:https://abseil.io/tips/76 译者:clangpp@gmail.com)每周贴士 #76: 使用absl::Status最初发布于:2014-05-04作者:Titus Winters更新于:2020-02-06短链接:abseil.io/tips/76有同学提问在什么时候、该怎么使用absl::Status,所以这里准备了一些应该使用Status的情况,以及使用的时候要注意些什么。传达意图且强制调用者处理错误使用Status来强制调用者处理可能出现的错
2021-05-04 13:12:00 1997
翻译 Google C++每周贴士 #176: 返回值优于输出参数
(原文链接:https://abseil.io/tips/176 译者:clangpp@gmail.com)每周贴士 #176: 返回值优于输出参数最初发布于:2020-03-12作者:Etienne Dechamps更新于:2020-04-06短链接:abseil.io/tips/176问题考察如下代码:// 从给定的`doodad`中提取`foos_spec`和`bar_s...
2020-04-14 08:57:19 411
翻译 Google C++每周贴士 #173: 以Option结构体传递参数
(原文链接:https://abseil.io/tips/173 译者:clangpp@gmail.com)C++每周贴士 #173: 以Option结构体传递参数最初发布于:2019-12-19作者:John Bandela更新于:2020-04-06短链接:abseil.io/tips/173It came without packages, boxes or bags. An...
2020-04-08 10:45:04 427
翻译 Google C++每周贴士 #108: 避免使用std::bind
(原文链接:https://abseil.io/tips/108 译者:clangpp@gmail.com)每周贴士 #108: 避免使用std::bind最初发布于2016-01-07作者:Roman Perepelitsa (roman.perepelitsa@gmail.com)更新于2019-12-19短链接:abseil.io/tips/108避免使用std::bind...
2020-04-06 06:34:45 1176
翻译 Google C++每周贴士 #152: AbslHashValue和你
(原文链接:https://abseil.io/tips/152 译者:clangpp@gmail.com)每周贴士 #152: AbslHashValue和你最初发布于2018-06-21作者:Matt Kulukundis(译者注:这库用起来就一个字儿,爽!)“I love Mozart, but I often make a terrible hash of it.” – Si...
2019-04-02 14:11:31 1601
翻译 Google C++每周贴士 #42: 工厂函数优于初始化方法
(原文链接:https://abseil.io/tips/42 译者:clangpp@gmail.com)C++每周贴士 #42: 工厂函数优于初始化方法最初发布于2013-05-10作者:Geoffrey Romer (gromer@google.com)校订于2017-12-21“The man who builds a factory builds a temple; the ...
2018-10-10 15:00:00 1207
翻译 Google C++每周贴士 #36: 新的拼接API
(原文链接:https://abseil.io/tips/36 译者:clangpp@gmail.com)C++ 每周贴士 #36: 新的连接(Join)API最初发布于2013-03-21作者:Greg Miller (jgm@google.com)更新于2018-01-24“I got a good mind to join a club and beat you over th...
2018-10-09 13:24:20 524
翻译 Google C++每周贴士 #24: 复制简明判定法
(原文链接:https://abseil.io/tips/24 译者:clangpp@gmail.com)Tip of the Week #24: Copies, Abbrv.C++每周贴士 #24: 复制简明判定法原始发布于2012-11-26作者:Titus Winters, (titus@google.com)和Chandler Carruth (chandlerc@google....
2018-10-04 13:08:26 229
翻译 Google C++每周贴士 #11: 返回策略
(原文链接:https://abseil.io/tips/10 译者:clangpp)C++每周贴士 #11: 返回策略最初发布于2012-08-16作者:Paul S. R. Chisholm (p.s.r.chisholm@google.com)Frodo: There’ll be none left for the return journey. Sam: I don’t thi...
2018-10-02 14:42:56 344
翻译 Google C++每周贴士
C++每周贴士原文链接:https://abseil.io/tips/背景介绍:大约五年前,我们在Google内部开始发布一系列C++贴士,大约每周一个,被称为“C++每周贴士”(TotW)。这个系列非常成功,直到今天我们还在发布它们。(这也表明像C++这么丰富的语言短期内不会让我们没主题可发)。我们不光讨论更精细的语言知识点,我们是真的“贴士”风格——提供建议或设计偏好。C++ Tot...
2018-09-27 15:16:23 700
翻译 Google C++每周贴士 #10: 分割字符串,不必拘小节
C++每周贴士 #10: 分割字符串,不必拘小节原文链接:https://abseil.io/tips/10最初发布于:2012-08-16作者:Greg Miller (jgm@google.com)更新于:2018-01-24I tend to have an odd split in my mind. –John Cleese(译者注:在文章开始引用一段名人名言是TotW的一...
2018-09-27 14:04:54 693
翻译 Google C++每周贴士 #3: 字符串拼接,operator+对比StrCat()
C++每周贴士 #3: 字符串拼接,operator+对比StrCat()原文链接:https://abseil.io/tips/3最初发布于2012-05-11更新于2017-09-18校订于2018-01-22当审查代码的的人对程序员说“别用字符串拼接操作符,太低效了”,程序员常常会一脸吃惊:std::string::operator+怎么会低效呢?难道这不是很难出错的方式吗?...
2018-09-26 15:10:04 1212
翻译 Google C++每周贴士 #1: string_view
C++贴士 #1: string_view原文链接: https://abseil.io/tips/1最初发布于2012-04-20作者: Michael Chastain (mec.desktop@gmail.com)更新于2017-09-18什么是string_view,以及为什么你应该关心?如果需要写一个函数接受(常量)字符串为输入参数,你有四个选项:其中两个你已经知道了,另...
2018-09-26 14:04:11 1591
原创 Google C++编程规范 阅读笔记
最近正在看Google C++ Style Guide(中文版在这里),发现有一些貌似不起眼的话,其实很重要。想来想去,还是觉得记一下比较好,以后编程也好有个参照,算是送给未来的我一个礼物吧。 ...
2018-09-26 13:57:52 215
原创 用C++11优化矩阵运算的空间和时间效率
最近在segmentfault.com上看到一个问题,提问者想要利用C++11的移动语义,减少矩阵相加时临时对象的构造。受此启发,我实现了一个简单的矩阵类,利用C++11标准中的一些特性,对矩阵运算进行了时间和空间效率的优化。(完整代码:matrix.h、matrix_test.cc、run.sh)用C++11的移动语义,优化矩阵运算的空间效率C++11的右值引用(T&&),可以将一个变量
2014-08-28 00:21:47 3916 2
C++11 Matrix
2014-09-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人