首页 » PHP教程 » traits与policyphp技巧_可以说是70的 C 轨范员成长经历 平庸但伟大

traits与policyphp技巧_可以说是70的 C 轨范员成长经历 平庸但伟大

访客 2024-11-01 0

扫一扫用手机浏览

文章目录 [+]

1. 完全的学一遍 C++ 所有措辞特性,范例书本 \"大众The C++ Programming Language\"大众 Part1, Part2, \"大众C++ Primer\公众

觉得 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, const/mutable, exception, template),太多精妙的东西随意马虎导致影象噜苏化,学了又忘了,尤其是那些很少用的部分

traits与policyphp技巧_可以说是70的 C 轨范员成长经历 平庸但伟大

实践:编写一些带 class 和 virtual 字眼的所谓的 C++ 程序

2. 树立 C++ 的规则,明确在 C++ 天下“合法的并不一定是合理的”,范例书本 Effective C++ 系列

有些东西可用 C++ 写,但一样平常情形下并不合理,如 protected 成员数据, 覆盖 non-virtual 成员

实践:创造 C++ 有强烈的语义约束,和次措辞 (sub-language) 范畴,开始写一些规矩的代码

3.1 为了使上述的约束更加形式化,开始利用 设计模式,范例书本 \公众The C++ Programming Language\"大众 Part4, \公众Design Patterns\公众

实践:教条的套模式,与人协作,编写真实规模的程序

开始想:有时传统的设计模式对 C++ 很丢脸 (OO),有没有一种原生化的 C++ 模式实现思路(以便利用 C++ 的高效性),开始对静态类型系统和模板推导着迷 (GP)

3.2 为了开拓快捷,开始利用 标准库,范例书本 \"大众The C++ Programming Language\"大众 Part3, \"大众The C++ Standard Library\"大众, \"大众Effective STL\"大众

光用标准库是不能知足真正的 C++ 程序员的好奇心:auto_ptr, iostream 这些精妙的东西是若何实现的?string 的开销究竟有多大?functional/alogrithm, iterator, container 这三者是若何分离的?

于是开始阅读某个标准库实现(范例的是 HP-SGI 的实现,但建议 Windows coder 读 MSVC 的),并考试测验自己的等价实现,虽然可能只是标准库的一部分功能。
这里一个很大的驱动力是重视 C++ 的高效性

至此,已经知道如何在 raw/smart pointer, char/string, static/dynamic bind, array/STL container 之间决议

实践:编写可稳定事情的程序,重视模块的复用性和扩展性,并理解将书本模式(学院派)实化为优质的 C++ 代码之间的鸿沟

4. 插曲:3.1 和 3.2 过程会交替重叠进行,并导致 重学 template C++ 这个次措辞,范例书本 \公众C++ Templates: The Complete Guide\"大众

5.1 玩转 template C++ 和 GP,创造它是超强的代码天生器,和模式塑型器,范例书本 \"大众Modern C++ Design\"大众

开始进入一种偏执狂式的 GP 和模式运用状态:

1. 把所有的实体都工具化, wrapper hell

2. 把所有的观点都抽象化, abstract class/factory

3. 把所有的行为都策略化, 动态的: strategy, 静态的: traits, policy

4. 把所有的实现都向标准库靠拢, Think in STL: every IO is iostream, every algorithm uses iterator, every container is type-safed and nonintrusive with specialization for optimization

成也萧何败萧何:炫技和实用只在一念之间

至此,险些每个 C++ 程序员手上都有自己的一个 semi-STL 的私人库,那是多年的积累

实践:编写工业强度的 C++ 程序,你的一部分代码(库)可能以开源或闭源的形式供他人利用

5.2 开始利用 一个 Think in STL 的叫做 Boost 的东西,于是你对 Boost 做了和上面 STL 同样的事,范例书本 \公众Beyond the C++ Standard Library\"大众, \公众Boost Docs\"大众, \"大众Boost 程序库完备开拓指南\"大众

大概还对 C++11 感兴趣,现在可用即 TR1,范例书本 \公众The C++ Standard Library Extensions\"大众

实践:以较高的效率编写工业强度的 C++ 程序

5.1 和 5.2 过程会交替重叠进行

6. 过度的玩 template C++ 将会导致 元编程,范例书本 \"大众C++ Template Metaprogramming\公众

只管它很炫耀,但生产环境中却很少用

补充:既然认为 TMP 是 turing-complete 的,并且秉持 handy coding 和 compiling is running 的理念,实际上你是须要一个动态措辞(把 C++ 编译器当阐明器用,而且还不能调试)。
再将范围缩小:从目前 C++ 社区事情来看结合最成熟的 interop 措辞是 Python

实践:地球很危险,回火星去吧

7. 一个高质量的 C++ 程序所在的商业项目失落败了,导致你 陷入沉思

稽核失落败的可能缘故原由:

1. 商业决策,和 C++ 无关

2. 实在是部分高质量 C++ 程序,高质量的模块由精良程序员编写,其它人的很烂

办法 1. 你很喜好现在的团队:谆谆教导那些新手,让他们经历你的至少 2-3 阶段,短韶光领悟是不可能的,你很清楚

办法 2. 离开去找和你水平相称的人,记住:C++ 是真正懂它之人的利器,而是一知半解者的绞绳,还不如完备不会用 C++

3. 过度的个人炫技,导致代码繁芜度过高

不易理解、难掩护、开拓韶光长

4. 须要一个度

1. 实现复用性和扩展性的难度不宜超过团队的均匀水平

2. 团队的均匀水平不宜低于同类产品开拓的市场竞争者的均匀水平

5. 须要一个目标和态度

1. 以制作可交付利用,可事情的产品为终极目的

2. 做最好产品,而不一定用最好的技能

8. 返璞归真(你懂的)

学习从来不是一个人的事情,要有个相互监督的伙伴,事情须要学习C/C++或者为了入行、转行学习C/C++的伙伴可以私信回答小编“学习”领取全套免费C/C++学习资料、视频

标签:

相关文章

执业药师试卷代码解码药师职业发展之路

执业药师在药品质量管理、用药安全等方面发挥着越来越重要的作用。而执业药师考试,作为进入药师行业的重要门槛,其试卷代码更是成为了药师...

PHP教程 2025-02-18 阅读0 评论0

心灵代码主题曲唤醒灵魂深处的共鸣

音乐,作为一种独特的艺术形式,自古以来就承载着人类情感的表达与传递。心灵代码主题曲,以其独特的旋律和歌词,唤醒了无数人的灵魂深处,...

PHP教程 2025-02-18 阅读0 评论0

探寻福建各市车牌代码背后的文化内涵

福建省,地处我国东南沿海,拥有悠久的历史和丰富的文化底蕴。在这片充满魅力的土地上,诞生了许多具有代表性的城市,每个城市都有自己独特...

PHP教程 2025-02-18 阅读0 评论0

探寻河北唐山历史与现代交融的城市之光

河北省唐山市,一座地处渤海之滨,拥有悠久历史和独特文化的城市。这里既是古丝绸之路的起点,也是中国近代工业的发源地。如今,唐山正以崭...

PHP教程 2025-02-18 阅读0 评论0