×

高质量编程

高质量编程(高质量编程pdf)

admin admin 发表于2023-04-12 12:56:11 浏览40 评论0

抢沙发发表评论

本文目录一览:

每个开发人员都应该知道的16个顶级新计算机编程语言

函数式语言

Elixir

Elixir 比 Erlang 更容易编写,具有 Haskell 等语言的函数式编程概念。Elixir是基于Erlang 虚拟机的,其广为人知的特点是运行低延时、分布式、可容错的系统,并成功用于Web开发与嵌入式软件领域。-高质量编程

Elm

Elm是一种用于构建 Web 应用程序的函数式语言。业内一般认为,它适用于创建高可交互应用,例如复杂的用户界面,开发人员可以通过 Elm 快速编写富有表现力的系统。Elm 也以没有运行时异常而闻名。-高质量编程

PureScript

PureScript是一种可编译为 JavaScript 的纯函数式编程语言。与 Haskell 最相似的是,PureScript 最适合用于开发 Web 应用程序和服务器端应用程序。

PureScript 支持类型推断,与其他语言相比,需要明显类型注释要少得多。

Swift

Swift是一种由苹果公司开发的通用编译编程语言,最早的设想是替代上一代编程语言Objective-C ,过程中结合了Objective-C、Rust、Ruby 和 Python等语言的编程思想。目前Swift用于开发苹果自己的手机、服务器、台式机上的应用软件。-高质量编程

程序语言

Go

Go语言是由谷歌公司创造的类似C风格的语言。Go 比 C++ 或 Java 更简洁,比 Ruby 或 Python 更安全。

一些缺点: 编码要求严格。比如,不能混用符号和无符号整数。还有一个明显的遗漏,Go语言没有泛型和继承。

但Go语言的优势同样明显,简单且易于使用。Go语言擅长于网络和多线程方面的编程。

面向对象语言

DART

Dart同样来自谷歌公司具有C语言风格。Dart可以轻松编写JavaScript、Java for Android、本地机器代码或独立的 Dart 虚拟机。它还可以运行后端代码。

Dart 非常适合使用事件驱动代码构建用户界面。根据Dart 团队成员的说法,Dart的优势:可选的静态类型、最小的编译时错误和强大的内置编辑器。

Pony

Pony是一种基于无数据竞争类型和垃圾收集的语言,并使用 actor 模型以及称为引用功能的东西。

你可以把 Pony 想象成某种“Rust 遇上 Erlang”的复合体,没有锁,高并发是其主要优点。

Pony 的缺点是 API 稳定性低、很少有高质量的第三方库和有限的本地工具。

TypeScript

TypeScript是一个基于 JavaScript 静态类型定义构建,并由微软维护且开源编程语言。Visual Studio Code 或Visual Studio 是推荐的IDE编辑器,微软大厂的用户体验和错误检查也不用怀疑。-高质量编程

复合编程语言

Hack

Hack是一种作为 PHP 方言的 HipHop 虚拟机的编程语言。于 2014 年由Facebook创建,允许程序员同时使用静态和动态类型(也称为渐进类型),这为编码提供了灵活性。

Julia

Julia是一种高级通用编程语言,用于计算科学和数值分析。Julia 以动态类型和可重现的高性能特性而闻名。

Julia 在数据可视化和机器学习等方面都有大量用途。事实上,它被英国保险公司 Aviva 用于风险计算,纽约联邦储备银行用于金融建模,甚至气候建模联盟用于气候变化建模。它拥有Fortran、C++、R、Java、C 、Python等的接口,这使其成为最受追捧的新语言之一。-高质量编程

Kotlin

Kotlin是运行在 Java 虚拟机中的更快、更流畅的 Java 版本。它现在是Android 开发的首选语言。根据 Android 开发者网站显示,程序员正转而采用 Kotlin,因为该语言的样板代码更少,空指针异常更少,并且与 Java 有互操作性。-高质量编程

Kotlin 可用于在 iOS 和 Android 上运行的应用程序、不使用额外运行时或虚拟机。

Nim

Nim是一种优先考虑可读性的静态类型语言。通过结合多种语言的特性,Nim 为程序员提供了速度和易用性。

它带有 JavaScript 后端、分散的包管理、自动内存管理、C 和 C++ 库的绑定以及用于调试的回溯。作为一种语言,Nim 是有限的,但它包含一组元编程功能,如泛型、模板和宏,因此开发人员可以在避免冗长代码的同时以不同的风格工作。-高质量编程

OCaml作为此列表中较旧的语言,OCaml是一种多范式语言——既有函数式、命令式和类型安全,也具有面向对象功能。

OCaml 的一些优势:定义数据类型很容易。默认情况下,所有变量都是不可变的。API 稳定,具有良好的库向后兼容性。该语言还为独立应用程序提供自动内存管理和单独编译。

Reason

如果比JavaScript 更快、更简单且类型安全会怎样?

这就是创建Reason的 Facebook 开发者想要回答的问题。不过,他并没有从头开始构建一种新语言,而是采用了 OCaml,并将其调整为类似于 JavaScript。

Reason使用项目 BucketScript编译为 JavaScript,并且可以访问 80% 的 JavaScript 工具和生态系统。它还可以编译为准系统、iOS、Android 和微控制器。-高质量编程

Red

Red是一种最初旨在克服 Rebol 语言限制的编程语言。Red 于 2011 年推出,受 Rebol、Lua 和 Scala 等语言的影响,对高级和低级编程都很有用。

该语言可用于开发从高级 GUI 到低级操作系统的所有方面。Red 拥有人性化的语法、低内存占用和垃圾收集等优点。

Rust

Rust解决了一些与 Go 相同的问题,如系统级别的线程和进程安全,,但Rust 更像 C 风格的语法

但Rust语言的缺点:静态类型和缺乏垃圾收集

Rust可直接访问内存意味着程序员可以编写低级代码,如操作系统内核。Rust 也非常适合嵌入式设备、网络服务和命令行编写。

介绍几个关于C++编程比较好的网站或论坛,最好是天天都有更新

中国最大IT技术社区

十部算法经典著作 合集

二级试题全集

高质量C++/C编程指南

应用C++技术构建优质软件

ASCII码表

C\C++语言程序百例

;C++YuanYanChenXuBaili

C++编码规范与指导

C++PrimerPlus4th

C++语言程序设计课件(作者:郑莉)

C++语言程序设计

C语言函数示例集

C高级编程技术

C语言技术文章

C++疑难解答

C++实践之路

C++应用程序例解

C++参考

CPrimerPlus5thEdition习题答案

C语言编程宝典之一

C语言参考手册

C语言学习和精华文摘

数据访问模式

数据结构与算法综合资料库

数据结构-严蔚敏

Effective C++

GenericProgramming

设计模式迷你手册

经典排序算法

谭浩强C语言

TheC++ProgrammingLanguage3rdEd

TheCprogrammingLanguage

TurboC2.0集成开发环境的使用

用VC开发ACTIVEX

;MFC/ActiveXProgramingWithVC

用DirctX9进行高级3D游戏程序设计

;MFC/Advanced3DGameProgrammingwithDirectX9

APracticalGuideUsingVisual C++andATL

;MFC/APracticalGuideUsingVisualCandATL

21天学会VC数据库编程

;MFC/DatabaseProgrammingWithVisualC6In21Days

STL轻松入门

;MFC/EasySTL

InsideAtl

;MFC/InsideAtl

COM+组件服务技术内幕

;MFC/InsideCOM+

MFC参考手册

;MFC/MFCReference

Windows网络编程技术

;MFC/NetworkProgramingForMicrosoftWindows

OGRE手册

;MFC/OGREManual

OpenGL基础图形编程

;MFC/OpenGLJiChuTuXingBianCheng

MFC程序设计

;MFC/progmfc2

VC技术内幕

;MFC/ProgramingVC

Windows核心编程

;MFC/ProgrammingApplicationsforMicrosoftWindows

21天学会ActiveX编程

;MFC/TeachYourselfActivexIn21Days

游戏编程大师技巧(第二版)

;MFC/TricksofWinGameProgrammingGurus2ed

VC编程经验总结

;MFC/VCBianChengJianYanZongJie

VC编程资料

;MFC/VCBianChengZiliao

VC常见问题集(中文)

;MFC/VCFaqsCN

VC高级编程

;MFC/VCGaoJiBianCheng

vchome图形图像编程技术篇

;MFC/vchomeGraph

VC知识库

;MFC/vckbase

VC语言参考手册

;MFC/VCLANG

vc++ 编程指南

;MFC/VCProgramGuide

Windows程序设计

;MFC/WindowsProgramming

Winsock程序员疑难解答

;MFC/WinsockProgrammerFAQ

Microsoft编程精粹

;MFC/WritingCleanCode

如何编写高质量的代码!

载选编程思想

非程序员 编 著

代码永远会有BUG,在这方面没有最好只有更好。高效是程序员必须作到的事情,无错是程序员一生的追求。复用、分而治之、折衷是代码哲学的基本思想。模块化与面向对象是实现高效无错代码的方法。高效无错代码需要思想与实践的不断反复。-高质量编程

1.2.1 命名约定

命令规范基本上采用了微软推荐的匈牙利命名法,略有简化。

1. 常量

常量由大写字母和数字组成,中间可以下划线分隔,如 CPU_8051。

2. 变量

变量由小写(变量类型)字母开头,中间以大写字母分隔,可以添加变量域前缀(变量活动域前缀以下划线分隔)。如: v_nAcVolMin(交流电压最小值)。

变量域前缀见下表

局部变量,如果变量名的含义十分明显,则不加前缀,避免烦琐。如用于循环的int型变量 i,j,k ;float 型的三维坐标(x,y,z)等。

3. 函数名一般由大写字母开头,中间以大写字母分隔,如SetSystemPara。函数命名采用动宾形式。如果函数为最底层,可以考虑用全部小写,单词间采用带下划线的形式。如底层图形函数:pixel、lineto以及读键盘函数get_key 等。-高质量编程

4. 符号名应该通用或者有具体含义,可读性强。尤其是全局变量,静态变量含义必须清晰。C++中的一些关键词不能作为符号名使用,如class、new、friend等。符号名长度小于31个,与ANSI C 保持一致。命名只能用26个字母,10个数字,以及下划线‘_’来组成,不要使用‘$’‘@’等符号。下划线‘_’使用应该醒目,不能出现在符号的头尾,只能出现在符号中间,且不要连续出现两个。-高质量编程

5. 程序中少出现无意义的数字,常量尽量用宏替代。

1.2.2 使用断言

程序一般分为Debug版本和Release版本,Debug版本用于内部调试,Release版本发行给用户使用。

断言assert是仅在Debug版本起作用的宏,它用于检查“不应该”发生的情况。以下是一个内存复制程序,在运行过程中,如果assert的参数为假,那么程序就会中止(一般地还会出现提示对话,说明在什么地方引发了assert)。-高质量编程

//复制不重叠的内存块

void memcpy(void *pvTo, void *pvFrom, size_t size)

{

void *pbTo = (byte *) pvTo;

void *pbFrom = (byte *) pvFrom;

assert( pvTo != NULL pvFrom != NULL );

while(size - - 0 )

*pbTo + + = *pbFrom + + ;

return (pvTo);

}

assert不是一个仓促拼凑起来的宏,为了不在程序的Debug版本和Release版本引起差别,assert不应该产生任何副作用。所以assert不是函数,而是宏。程序员可以把assert看成一个在任何系统状态下都可以安全使用的无害测试手段。-高质量编程

以下是使用断言的几个原则:

1)使用断言捕捉不应该发生的非法情况。不要混淆非法情况与错误情况之间的区别,后者是必然存在的并且是一定要作出处理的。

2)使用断言对函数的参数进行确认。

3)在编写函数时,要进行反复的考查,并且自问:“我打算做哪些假定?”一旦确定了的假定,就要使用断言对假定进行检查。

4)一般教科书都鼓励程序员们进行防错性的程序设计,但要记住这种编程风格会隐瞒错误。当进行防错性编程时,如果“不可能发生”的事情的确发生了,则要使用断言进行报警。

1.2.3 优化/效率

规则一:对于在中断函数/线程和外部函数中均使用的全局变量应用volatile定义。例如:

volatile int ticks;

void timer(void) interrupt 1 //中断处理函数

{

ticks++

}

void wait(int interval)

{

tick=0;

while(tickinterval);

}

如果未用volatile,由于while循环是一个空循环,编译器优化后(编译器并不知道此变量在中断中使用)将会把循环优化为空操作!这就显然不对了。

规则二:不要编写一条过分复杂的语句,紧凑的C++/C代码并不见到能得到高效率的机器代码,却会降低程序的可理解性,程序出错误的几率也会提高。

规则三:变量类型编程中应用原则:尽量采用小的类型(如果能够不用“Float”就尽量不要去用)以及无符号Unsigned类型,因为符号运算耗费时间较长;同时函数返回值也尽量采用Unsigned类型,由此带来另外一个好处:避免不同类型数据比较运算带来的隐性错误。-高质量编程

1.2.4 其他

规则一:不要编写集多种功能于一身的函数,在函数的返回值中,不要将正常值和错误标志混在一起。

规则二:不要将BOOL值TRUE和FALSE对应于1和0进行编程。大多数编程语言将FALSE定义为0,任何非0值都是TRUE。Visual C++将TRUE定义为1,而Visual Basic则将TRUE定义为-1。例如:-高质量编程

BOOL flag;

if(flag) { // do something } // 正确的用法

if(flag==TRUE) { // do something } // 危险的用法

if(flag==1) { // do something } // 危险的用法

if(!flag) { // do something } // 正确的用法

if(flag==FALSE) { // do something } // 不合理的用法

if(flag==0) { // do something } // 不合理的用法

规则三:小心不要将“= =”写成“=”,编译器不会自动发现这种错误。

规则四:建议统一函数返回值为无符号整形,0代表无错误,其他代表错误类型。

1.3 模块化的C编程

C语言虽然不具备C++的面向对象的成分,但仍应该吸收面向对象的思想,采用模块化编程思路。面向对象的思想与面向对象的语言是两个概念。非面向对象的语言依然可以完成面向对象的编程,想想C++的诞生吧!

C++没有理由对C存在傲慢与偏见,不是任何场合C++方法都是解决问题的良药,譬如面对嵌入式系统效率和空间的双重需求。注意我们谈的是方法,而不是指编译器。

C在软件开发上存在的首要问题是缺乏对数据存取的控制(封装),C编程者乐而不疲的使用着大量extern形式的全局变量在各模块间交换着数据,“多方便啊”编程者乐曰,并传授给下一个编程者。这样多个变量出现在多个模块中,剪不断理还乱,直到有一天终于发现找一个“人”好难。一个东西好吃,智者浅尝之改进之,而愚者只会直至撑死。-高质量编程

这世上本没有什么救世主,应在C上多下功夫,程序员和C缔造者早就有过思考,相信野百合也有春天,还是看看C语言如何实现模块化编程方法,在部分程度上具备了OO特性封装与多态。

在具体阐述之前,需要明确生存期与可见性的概念。生存期指的是变量在内存的生存周期,可见性指的是变量在当前位置是否可用。两者有紧密联系,但不能混为一谈。一个人存在但不可见只能解释成上帝或灵魂,一个变量存在但不可见却并非咄咄怪事,模块化方法正是利用了静态函数、静态变量这些“精灵”们特殊的生存期与可见性。-高质量编程

最后需要明确一点的是这里的模块是以一个.C文件为单位。

规则一:利用函数命名规则和静态函数

模块中不被其他模块调用的内部函数采用以下命名规则:用全部小写,单词间采用带下划线的形式。如底层图形函数:pixel、lineto以及读键盘函数get_key等。这些函数应定义为static静态函数,这样在其他模块错误地调用这些函数时编译器能给出错误(如BC编译器)。(注意:有些编译器不能报告错误,但为了代码风格一致和函数层次清晰,仍建议这样作)。-高质量编程

规则二:利用静态变量

模块中不能被其他模块读写的全局变量应采用static声明,这样在其他模块错误地读写这些变量时编译器能给出警告(C51编译器)或错误(BC编译器)。

规则三:引入OO接口概念和指针传参

模块间的数据接口(也就是函数)应该事先较充分考虑,需要哪些接口,通过接口需要操作哪些数据,尽量作到接口的不变性。

模块间地数据交换尽量通过接口完成,方法是通过函数传参数,为了保证程序高效和减少堆栈空间,传大量参数(如结构)应采用传址的方式,通过指针作为函数参数或函数返回指针,尽量杜绝extern形式的全局变量,请注意是extern形式的全局变量,模块内部的全局变量是允许和必须的。-高质量编程

传指针参数增加的开销主要是作参数的指针和局部指针的数据空间(嵌入式系统(如C51)往往由于堆栈空间有限,函数参数会放到外部RAM的堆栈中),增加的代码开销仅是函数的调用,带来的是良好的模块化结构,而且使用接口函数会比在代码中多处直接使用全局变量大大节约代码空间。-高质量编程

需注意一点的事物总有他的两面性,水能载舟,也能覆舟。对于需要频繁访问的变量如果仍采用接口传递,函数调用的开销是巨大的,这时应考虑仍采用extern全局变量。

以下演示了两个C模块交换数据:

//Module1.C

OneStruct* void GetOneStruct(void); //获取模块1数据接口

void SetOneStruct(OneStruct* pOneStruct); //写模块1数据接口

struct OneStruct

{

int m¬_imember;

//……

}t1; //模块1的数据

//t1初始化代码…..

OneStruct* void GetOneStruct(void)

{

OneStruct* pt1; //只需定义一个局部变量

t1.imember=15;

pt1=t1;

return pt1;

}

void SetOneStruct(OneStruct* pOneStruct)

{

t1.imember=pOneStruct-imember;

//…….

}

//Module2.C

void OperateOneStruct(void); //模块2通过模块1提供的接口操作模块1的数据

OneStruct* void GetOneStruct(void);

void SetOneStruct(OneStruct* pOneStruct);

void OperateOneStruct(void)

{

OneStruct* pt2; //只需定义一个局部变量

pt2=GetOneStruct(); //读取数据

SetOneStruct(pt2); //改写数据

}

采用接口访问数据可以避免一些错误,因为函数返回值只能作右值,全局变量则不然。

例如 cOneChar == 4; 可能被误为cOneChar = 4;

规则四:有限的封装与多态

不要忘记C++的class源于C的struct,C++的虚函数机制实质是函数指针。为了使数据、方法能够封装在一起,提高代码的重用度,如对于一些与硬件相关的数据结构,建议采用在数据结构中将访问该数据结构的函数定义为结构内部的函数指针。这样当硬件变化,需要重写访问该硬件的函数,只要将重写的函数地址赋给该函数指针,高层代码由于使用的是函数指针,所以完全不用动,实现代码重用。而且该函数指针可以通过传参数或全局变量的方式传给高层代码,比较方便。例如:-高质量编程

struct OneStruct

{

int m¬_imember;

int (*func)(int,int);

//……

}t2;

《编写高质量代码改善Java程序的151个建议》epub下载在线阅读全文,求百度网盘云资源

《编写高质量代码》(秦小波)电子书网盘下载免费在线阅读

链接:

提取码: k529  

书名:编写高质量代码

作者:秦小波

豆瓣评分:6.5

出版社:机械工业出版社华章公司

出版年份:2011-12-28

页数:303

内容简介:

在通往“Java技术殿堂”的路上,本书将为你指点迷津!内容全部由Java编码的最佳实践组成,从语法、程序设计和架构、工具和框架、编码风格和编程思想等五大方面对Java程序员遇到的各种棘手的疑难问题给出了经验性的解决方案,为Java程序员如何编写高质量的Java代码提出了151条极为宝贵的建议。对于每一个问题,不仅以建议的方式从正反两面给出了被实践证明为十分优秀的解决方案和非常糟糕的解决方案,而且还分析了问题产生的根源,犹如醍醐灌顶,让人豁然开朗。-高质量编程

全书一共12章,1~3章针对Java语法本身提出了51条建议,例如覆写变长方法时应该注意哪些事项、final修饰的常量不要在运行期修改、匿名类的构造函数特殊在什么地方等;4~9章重点针对JDK API的使用提出了80条建议,例如字符串的拼接方法该如何选择、枚举使用时有哪些注意事项、出现NullPointerException该如何处理、泛型的多重界限该如何使用、多线程编程如何预防死锁,等等;10~12章针对程序性能、开源的工具和框架、编码风格和编程思想等方面提出了20条建议。-高质量编程

本书针对每个问题所设计应用场景都非常典型,给出的建议也都与实践紧密结合。书中的每一条建议都可能在你的下一行代码、下一个应用或下一个项目中崭露头角,建议你将此书搁置在手边,随时查阅,一定能使你的学习和开发工作事半功倍。-高质量编程

作者简介:

秦小波,资深软件开发工程师、系统分析师和架构师(获Sun架构师认证),从软件开发工作10余年,实践经验极其丰富。资深Java技术专家,Java语言、Spring、Struts 2、Hibernate、iBatis、jBPM等Java技术,在企业级Java应用领域积累了大量工程经验,对ESB、BPEL等整合技术也有较深入的认识。精通设计模式,对设计模式有深刻的认识和独到见解,而且创造性地提出了自己在大量实践中总结出来的新的设计模式。他撰写的《设计模式之禅》一书凭借优质的内容和良好的可读性广获读者好评,被誉为“设计模式领域的里程碑之作。此外,他还是一位优秀的DBA,具有IBM DB2 DBA资格认证,对海量数据处理有深入的研究。-高质量编程

如何才能写出“高质量”的代码?

作为一个已经写了十几年代码的程序员,做好软件不是全部围绕代码而展开,换句话讲一个程序员的程序员优秀不仅仅体现在代码上,更要有内在的编程思想说的层次再高深点就是框架思想。很多初学者都会存在很多疑问,觉得能够写代码就万事大吉了,在能写代码之前会有很多疑问-高质量编程

数学不好能学好编程不?

英语不好能不能学好编程?

这些都是还没入门的疑问,真正入门之后发现这些都不是什么问题,真正决定程序员水平也不是简单的能写多少代码,真正项目实施过程写代码的时间占据不到百分三十,大部分时间是在设计和构思上,当然占据时间最多的是调试以及客户后续提出的需求上面,现在很多人还在纠结是不是要多学习几种编程语言,编程语言本质来讲就是一种工具,主要指导思想还是编程思想。-高质量编程

现实中如何才能写出高质量的代码?

1.良好编程基本功。再高的大厦也得需要强大的编程基础,不一定要掌握多少种编程语言关键要非常熟悉一种编程语言,里里外外都给吃透了,达到这种程度至于掌握几种编程语言就显得不是那么重要了,到了这种程度就可以触类旁通,切换一种新的编程语言也不会费多大事,有事没事就回头看看基础书,越是编程高手越是注重基本功的学习,很多做java的程序员,java编程思想这本书看了不下十几遍,而且还在继续,基础的学习什么时候值得回味。-高质量编程

2.专业知识的雄厚。编程语言只是工具,工具如何才能使用好,还是要看这工具是用来做什么的,比如安全领域可能使用C语言或者C++编程,如果安全专业知识掌握的非常扎实,工具使用起来再更加熟练,才能有高质量的代码出现,要把一个事情做到极致,各个细节点就要落实到位,缺一不可。-高质量编程

3.好的软件框架,软件框架是写出高质量代码的土壤,假如一个能力很强的人,进入一个乱糟糟的公司基本很难发挥出最大的潜能,所以生存土壤很重要,一个优秀的产品一定是代码各个模块有机配合在一起共同做出来的,一个模块的优秀代码优秀,整个产品出问题了意义也不是很大。-高质量编程

4.高质量的代码从来都不是一次性搞定的,都是经过多次的打磨修改出来的,玩过开源的人应该都明白,代码模块不停的升级优化折腾不停,不仅仅是功能的增加更重要的代码质量的提炼,所以想写出高质量代码需要敢对自己下手,对自己要狠一点才能有高质量的代码出来,细心的人可以观察下身边优秀的程序员,看看是不是都是这么做的。-高质量编程

做到以上四点,坚持下去写出来的代码质量不会差,当然还要懂得去阅读别人写的优秀代码,开始看的时候不一定能看得懂,不能大块的看懂就切块去看去学习,以前有个linux内核爱好者,整体看linux内核代码,有一天看到他十分开心的样子,问发生了什么事情,说看懂了linux内核里面的内存是如何管理的了,然后拉着我给我讲了半天,虽然没听懂但也坚持听到最后,毕竟代码能写的前提是能看懂,所以开源社区的代码如果能看懂就是一个非常大的进步,然后一步步的掌握起来,格局放大一定做出更大的事情来。-高质量编程