自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(196)
  • 资源 (22)
  • 收藏
  • 关注

翻译 Efficient Android Threading序言

第七章:描述最基本的异步构造,即java.lang.Thread,以及如何处理可能出现的各种状态和问题。第八章:显示在后台按顺序运行任务的便捷方法。第九章:提供处理调度、错误和线程处理的其他方面(如线程池)的技术。第十章:介绍AsyncTask(可能是最流行的异步技术)以及如何正确使用它以避免其缺陷。第十一章:介绍基本的服务组件,该组件对于您希望提供给多个应用程序的功能或在后台执行期间保持应用程序活动非常有用。第十二章:在前一章的基础上,讨论了在主UI线程外执行的有用技术。

2024-12-01 23:58:52 34

翻译 第十四章:使用 Loaders 来实现自动化地后台执行

Loader框架是添加到Android平台的最新异步技术。它是一个异步执行的框架,当涉及到CursorLoader时,它会大放异彩,因为它封装了特定用例的困难-即,内容提供商,并有效地解决它。该框架还通过允许自定义加载器实现提供了灵活性,但这需要应用程序付出更多的努力,考虑其他异步技术可能会更好。

2024-12-01 23:47:32 70

翻译 第十三章:使用AsyncQueryHandler 访问 ContentProviders

本节包含有关内容提供商的一些基本信息。有关详细信息,请参阅官方文档。ContentProvider是数据源的抽象,可以在应用程序中统一访问,也可以从在单独进程中运行的其他应用程序访问。访问方法源自提供程序最常见的用例:跨应用程序边界公开存储在SQLite数据库中的数据。

2024-12-01 22:45:06 38

翻译 第十二章:IntentService

IntentService是一个易于使用的顺序任务处理器,它不仅对于从UI线程卸载操作非常有用,而且对于从其他原始组件卸载操作也非常有用。本书中讨论的其他顺序任务处理器,如Thread、Executors.newSingleThreadExecutor和AsyncTask在某种程度上可以与IntentService相比较,但IntentService具有作为独立组件运行的优势,而其他组件则没有。

2024-12-01 22:14:27 27

翻译 第十五章:总结-选择一种异步技术

正如我们所看到的,Android平台为我们提供了许多异步技术来帮助我们同时运行任务和脱离UI线程运行任务。如果没有这些技术,就不可能实现快速响应的应用程序,因此它们成为核心功能的一部分。技术的范围是有帮助我们,使编码更容易,但我们总是要作出选择,使用哪些技术。有时选择很容易,例如,CursorLoader从提供程序阅读数据时,但我们经常会遇到几种机制可以解决这个问题的情况。在这种情况下,我们自然会习惯于使用我们以前知道并使用过的机制。

2024-12-01 21:47:40 32

翻译 第十一章:Services

服务在UI线程的后台运行,它非常适合将任务卸载到后台线程。可以更好地控制服务组件的生命周期,以适应后台线程,而不会让用户交互干扰组件的销毁,就像Activity一样。服务可以是活动的,直到所有后台任务完成。

2024-12-01 21:22:10 28

翻译 第十章:使用AsyncTask将后台任务绑定到UI线程

AsyncTask中预定义的执行程序SERIAL_EXECUTOR和THREAD_POOL_EXECUTOR是应用程序全局的,当应用程序执行大量任务时会存在性能损失的风险。自定义执行程序取代了AsyncTask中的执行环境,但保留了线程之间的进度更新通信:重写的方法以与预定义的执行程序相同的方式被调用。使用自定义(非全局)Executor与AsyncTask结合使用可以更好地处理顺序执行,例如第9章中描述的单线程执行程序。

2024-11-30 18:20:43 55

翻译 第九章:通过Executor框架对线程执行的控制

固定大小的线程池维护用户定义数量的工作线程。终止的线程被新线程替换,以保持工作线程的数量不变。这种类型的线程池是使用Executors.newFixedThread Pool(n) 创建的,其中n是线程的数量。这种类型的线程池使用无限任务队列,这意味着允许队列随着新任务的添加而自由增长。因此,生产者在插入任务时不会失败。动态大小,也就是. cached-thread pool在有任务要处理时,根据需要创建一个新线程。空闲线程等待新任务执行60秒,然后如果任务队列仍然为空则终止。

2024-11-30 17:03:32 34

翻译 第八章:HandlerThread,一种高级的线程机制

前文中提到的“Android消息传递”描述了在线程上使用消息队列和调度机制进行后台执行。该应用程序将消息队列和调度机制显式耦合到一个线程上。相反,您可以使用HandlerThread,它是一个方便的包装器,可以自动设置内部消息传递机制。本章内容包括:• 如何使用HandlerThread• HandlerThread与手动设置消息传递机制相比的优势• HandlerThread的用例HandlerThread是一个具有消息队列的线程,它包含Thread、Looper和MessageQueue。

2024-11-28 23:32:48 125

翻译 第七章:Android中如何管理线程的生命周期

在 Java 中,当执行路径到达结尾并且没有更多代码可执行时,运行中的线程通常会正常终止——即,在 Runnable.run() 方法的结尾处。例如,如果一个线程需要很长时间才能下载视频,并且用户按下取消下载按钮,则 UI 线程会捕获按钮按下事件,并希望终止下载线程。相反,线程可以被中断,这是一种请求线程终止的方法,但线程自己决定是否遵从。应用程序可以应用逻辑将线程引用存储在列表中,或者确保仅在之前启动的线程不再活动时才启动新线程,但是线程可能需要一些额外的逻辑来限制并发任务的数量。这是线程的最终状态;

2024-11-28 23:09:56 89

翻译 第六章:Android内存管理

这些对象中的大部分仅在生产者线程中被引用,因此可以在其退出时进行垃圾回收,但是Handler是内存泄漏的候选对象,因为它通过一系列对象链被从消费者线程引用,如图6-8所示。对象被分配在堆上,可以被垃圾回收,当它们被线程引用时,在内存中保留。一旦删除了对对象的最后一个引用,或者(在图 6-1中的C对象的情况下)如果剩余的引用没有任何对象连接到GC根,该对象就是不可达的。在以下示例中,只要该线程正在运行,Outer类中的任何对象都必须保留在内存中,以及内部SampleThread类中的对象。

2024-11-27 23:16:46 35

翻译 第五章:Android进程间通信

服务器进程可以向客户端进程发出事务并反转流程:原来的服务器进程成为客户端,并在原来的客户端进程中执行另一个Binder实现的事务,其自己的binder线程处理。如果多个客户端线程同时调用服务器进程中的阻塞方法,则binder线程池可能会耗尽线程,从而阻止其他客户端线程从远程调用中获取结果。如果服务器进程在执行onTransact时启动一个事务,调用transact向客户端进程发送请求,那么客户端进程将不会在一个binder线程上接收到传入的请求,而是在等待第一个事务完成的线程上接收到请求。

2024-11-27 22:45:27 45

翻译 第四章:Android线程间通信

Android应用程序可以访问常规的Java线程通信技术,这非常适合工作线程之间的通信。然而,它们很少适用于其中一个线程是UI线程的情况,这是最常见的情况。在Android应用程序中广泛使用消息传递,无论是显式地还是通过本书第二部分中讨论的各种包装技术隐式地使用。

2024-11-27 00:34:17 234

翻译 第三章:Android应用程中的线程

Android 中的所有线程类型——UI、binder 和后台线程——都是 Linux Posix 线程。当应用程序启动时,它具有一个 UI 线程和 一组 binder 线程,但应用程序必须自己创建后台线程。默认情况下,所有 Android 组件都在 UI 线程上执行,但长时间运行的任务应在后台线程上执行,以避免 UI 渲染变慢和 ANR 的风险。UI线程是最重要的线程,但与其他线程相比,并没有特殊的调度优势——调度程序不知道哪个线程是 UI 线程。

2024-11-25 23:22:22 53

翻译 第二章:Java中的多线程

Android 应用程序应该是多线程的,以提高单处理器和多处理器平台上的性能。线程可以在单个处理器上共享执行,也可以在多个处理器可用时利用真正的并发。性能的增加是以增加复杂性为代价的,并且有责任保护线程之间共享的资源并保持数据一致性。

2024-11-24 22:27:21 37 1

翻译 第一章:Android组件和多任务处理需求

Android应用程序在Dalvik运行时中的Linux操作系统上运行,该运行时包含在Linux进程中。Android应用了一个进程排名系统,该系统对每个正在运行的应用程序的重要性进行优先级排序,以确保只有优先级最低的应用程序才会被终止。若要提高性能,应用程序应将操作拆分到多个线程中,以便代码可以并发执行。每个Linux进程都包含一个负责更新UI的特定线程。所有长操作都应远离UI线程并在其他线程上执行。

2024-11-24 01:45:43 67

转载 手机里面的AP与BP

高通的芯片里面又分AP、BP, AP与BP分别表示什么?AP:Application Processor,即应用芯片BP:Baseband Processor,即基带芯片双核,四核,八核主要指的是 AP 部分;原来,FCC(美国联邦通信委员会)认证要求将AP和BP分开,因为射频控制相关的功能(信号调制、编码、射频位移等)都是高度的时间相关的,最好能将这些函数放在一个CPU核上运行,...

2019-04-25 17:28:32 2650

原创 移动硬盘错误检查与快速修复方法

几个月前买了台某云设备,并且将自己的移动硬盘挂上去了。1,可以发挥旧设备的余热;2,还可以随时查看硬盘上的数据信息;3,还可以远程备份手机端的信息到硬盘上;就这么愉快的使用了近两个月后,不幸的事发生了;远程硬盘打不开,回家把移动硬盘挂到电脑上也识别不了,提示要格式化,选择了否之后又提示“无法访问,文件或目录损坏且无法读取”。OMG! 晴天霹雳啊接下来就是磁盘数据恢复之旅了;...

2018-09-09 16:39:37 17606 3

转载 eclipse报错:'<>' operator is not allowed for source level below 1.7

报错:'这是eclipse的编译环境与项目的要求不对应造成的,这个错误一般是导入别的项目才出现的。解决:右键项目-->Properties-->Java Compiler-->勾选Enable project  specific  settings--Compiler compliance level-->选择1.7-->OK转载自:http://bbs.csdn.ne

2017-03-15 10:20:56 7303

原创 error: failed to load 'image-marlin-nof26v.zip': Not enough space

在用fastboot刷Nexus系列或者Pixel系统手机原生系统时,经常会碰到 error: failed to load 'image-marlin-nof26v.zip': Not enough space 这种错误;这个错误经常会给我们造成误导,以为是手机系统空间不够,其实不是,这个是fastboot工具的一个bug,google已经在最新的版本上解决了些问题;25.0.3 (De

2017-02-28 23:27:31 3605

原创 eclipse运行出错org.eclipse.swt.SWTError: No more handles

网上搜索过有很多解决办法并不正确,有的说要删除配置文件,有的说ADT版本不对,但无一解决问题。后面还是自己摸索发现与别的软件有冲突!eclipse错误原因:如下错误原因是与别的软件有冲突导致的。我这里是与ADBlock这个广告过滤软件冲突了。这个软件是通过百度助手下载的,另外我把百度助手也卸载了,也有流氓嫌疑;由于该问题是100%复现,也可以在问题发生进挨个kill一遍进程,就大概知道

2016-10-29 16:46:03 11566

原创 电脑不能通过adb 连接手机的解决办法

电脑不能通过adb 连接手机1,现象:电脑不能通过adb 连接手机,换数据线不行,重启手机不行,重启电脑也不行,但是别的手机可以顺利连上,这台手机在别的电脑上也可以顺利连上。2,解决办法:打开 D:\google\usb_driver\android_winusb.info 文件,找到标签 [Google.NTamd64] ,在其最后一栏添加一个设备

2016-07-19 21:52:29 12053

原创 简单几步解决 svchost 占用资源过高的问题

简单几步解决svchost占用内存过高问题:svchost.exe一段时间内占用的CPU飚升到25%,电脑一直在嗡嗡叫。后面查了一下主要是Windows Update占用的资源过高导致。1,在我的电脑上点击鼠标右键,选择【管理】2,选择右侧【服务和应用程序】下的【服务】选项3,找到名为Windows Update服务,双击4,选择启动类型为手动,服务状态为已停止5,点应

2016-04-30 09:40:17 42077 2

转载 linux环境下git 生成 patch 与 打patch

转载自:http://blog.youkuaiyun.com/liuxd3000/article/details/257980651,下载代码git clone git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-next-2.6.gitcd bluetooth-next-2.62,修改代码vi

2016-04-26 21:31:50 2604

原创 The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDat

java.lang.IllegalStateException: The application's PagerAdapter changed the adapter's contents without calling PagerAdapter#notifyDataSetChanged! Expected adapter item count: 1, found: 0 Pager id: com

2016-03-30 15:04:42 1878

原创 针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension解决方法

针对异常java.lang.IllegalStateException onMeasure() did not set the measured dimension by calling setMeasuredDimension()的解决办法: versionName = 2.5.2 versionCode = 20002100java.lang.IllegalStateExcepti

2016-03-30 12:07:35 13943 2

原创 python解析xml示例

python是一种脚本语言,功能非常强大我们来看看如何使用python来解析xml,举个粟子:例1:解析xml            1        2008        141100                                4        2011        59900

2016-03-21 22:18:02 8183

原创 ConditionVariable在Android应用开发中的用法

首先来看下ConditionVariable类的定义:C:\Program Files\Android\android-sdk\platforms\android-21\android.jarpackage android.os;public class ConditionVariable{    private volatile boolean mConditio

2016-03-09 22:24:17 1612

原创 笔记本电脑连接蓝牙耳机设备

1,  添加设备选择找到的蓝牙设备,譬如SBH702,  选择服务勾选耳机服务,应用,确定 3,  安装驱动A, Bluetooth外围设备驱动B, Bluetooth AVC, Bluetooth Headset通常情况下Bluetooth外围设备驱动无法安装成功,不过这并不要紧;仍然会提示成功将此设备添加到电脑。4,Bluetoo

2016-03-06 23:39:40 4814 1

原创 Android单元测试创建步骤

单元测试创建步骤:1,创建一个AndroidProject,包名为com.junit.example,类名MainActivity。这个app只实现一个简单功能:即点击按钮之后,TextView的内容由Hello变为Hello Android。2,在src目录下添加一个测试包,包名为com.junit.example.test,类名为MainActivityTest。该类中

2016-02-20 11:07:52 1409

原创 uiAutoMator 自动化测试创建步骤

uiAutoMator 自动化测试创建步骤:1,Android SDK Manager 中下载 Android Support Repository 相关类文件;2,创建 java 工程,编写黑盒测试用例;这里需要通过 UI AutoMator View 工具来解析该应用程序界面的UI元素;在 android-sdk/tools 目录下面;官网相关介绍可以看这里:htt

2016-01-06 22:33:40 1824

原创 eclipse 使用问题,按F3或者ctrl+click事件时,“current text selection cannot be opened in an editor”

众所周知,eclipse 在查看代码时,可以很方便使用 F3 或者 Ctrl+click 可以快速跳转到你想要看的那个函数或者变量;但我在使用的时候碰到了问题。当前类的变量或者函数可以快速跳转过去,但是跨类调用却跳转不了,此时状态栏弹出提示:“current text selection cannot be opened in an editor”。上网查到了一些解决方法:方法一:简单

2015-11-24 11:37:54 12373 3

转载 Java应用程序中的内存泄漏及内存管理

Java平台的一个突出的特性是自动内存管理。很多人把这种特性误读为Java没有内存泄露。然而,在我印象中,现代Java框架以及基于Java的平台并非如此。特别是Android平台,能举出很多反例。为了让大家对Java平台的内存泄露有一个初步的认识,我们先来看一个Java实现的栈:class SimpleStack { private final Object[] objectPoo

2015-11-15 16:06:29 1328

原创 关于 Android 源码

关于 android 源码下载,由于众所周知的原因,我们无法访问到 https://source.android.com/source/downloading.html 下载到android源码现在国内也有镜像了 https://aosp.tuna.tsinghua.edu.cn/,可以通过此网站下载。如果是为了下载编译,可以按照 https://mirrors.tuna.tsingh

2015-11-01 15:42:58 823

原创 Camera中对焦模式总结

1,相机对焦模式有以下几种:auto  //自动infinity //无穷远macro //微距continuous-picture //持续对焦fixed //固定焦距2,常见对焦模式切换场景2.1,单拍时,会先对焦再拍照,再切换到CAF;        有一个从 af 切换到 caf 过程2.2,连拍时,会先对焦再拍照,连拍完成,再切换到 CAF;

2015-11-01 14:26:47 24316

转载 Android 文件操作,删除,拷贝文件等

android删除文件操作方法: /** * 删除文件夹以及目录下的文件 * @param filePath 被删除目录的文件路径 * @return 目录删除成功返回true,否则返回false */ public boolean deleteDirectory(String filePath) { boolean fla

2015-09-20 00:22:17 7538

转载 android 中View SurfaceView SurfaceTexture 的区别

Android SurfaceView 与 View 的区别:http://bbs.51cto.com/thread-965972-1.html     如果你的游戏不吃CPU,用View就比较好,符合标准Android操作方式,由系统决定刷新surface的时机。  但如果很不幸的,你做不到不让你的程序吃CPU,你就只好使用SurfaceView来强制刷新surface了,不然系统的

2015-09-20 00:16:09 8211

原创 android应用内获取系统权限,来设置一些系统开关

1,需要在 Android.mk 文件内添加属性LOCAL_CERTIFICATE := platformLOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-subdir-java-files)LOCAL_PACKAG

2015-09-16 09:48:28 2402

转载 android apk编译时可以找到的资源,但在运行时却找不到出错Resources$NotFoundException

转载自:http://www.devdiv.com/home.php?mod=space&uid=258059&do=blog&id=11973在android开发中会用一些资源,这些资源以不同形式存在,比如说图片,xml等,android为这些不同类型的资源统一编号,生成资源类R 。如下: java代码:public final class R {public stati

2015-09-10 18:07:58 8232

转载 使用Memory Analyzer tool(MAT)分析内存泄漏(二)

转载自:http://www.blogjava.net/rosen/archive/2010/06/13/323522.html前言 在 使用Memory Analyzer tool(MAT)分析内存泄漏(一)中,我介绍了内存泄漏的前因后果。在本文中,将介绍MAT如何根据heap dump分析泄漏根源。由于测试范例可能过于简单,很容易找出问题,但我期待借此举一反三。 一开始不得不说

2015-07-07 17:33:08 1120

Efficient Android Threading 原稿;

Efficient Android Threading 原稿;

2024-12-02

Camera效果基础知识.doc

主要讲了照相效果方面的一些基础知识,如景深,光圈,shadding等内容

2013-05-25

android_protips_advanced_topics_for_expert_android_app_developers.pdf

google 出的一些关于android 应用性能优化等高级议题的文章,主要面象专家级的应用开发者。 如何提升性能

2013-05-25

测试之道 第二期

主要讲了测试方面的话题 如何让单元测试更健壮,如何构建自动化测试,集成测试等等

2013-05-25

ffmpeg-git-8475ec1-win32-static.7z

ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.

2013-05-25

odmlff2-avidef.pdf

This document describes the proposed format of the OpenDML-compliant AVI extensions, specifically for the Motion-JPEG DIB AVI file. This format is an extension to the AVI MJPEG DIB as defined in the JPEG DIB FORMAT technical note from Microsoft. The format is based on the ISO 10918 defined JPEG format.

2013-05-25

ISO_IEC_14496-14_2003-11-15.pdf

国际标准化组织制订的 MP4 文件格式标准。有详细的文件结构说明等内容。是最好的 MP4 文件格式学习文档。不过是英文的,需要读者有一定的英文基础。

2013-05-25

MP3文件结构解析

本文以实例的方式详细分析了 MP3文件格式和结构。对于想了解MP3文件格式的朋友会有很大的帮助。 Layer-3 音频文件,MPEG(Moving Picture Experts Group) 在汉语中译为活动图像专家组,特指活动影音压缩标准,MPEG音频文件是MPEG1 标准中的声音部分,也叫MPEG 音频层,它根据压缩质量和编码复杂程度划分为三层,即Layer-1、Layer2、Layer3,且分别对应MP1、MP2、MP3 这三种声音文件,并根据不同的用途,使用不同层次的编码。

2013-05-25

make apps great.pdf

make app good to great, google 的开发文档,讲了从哪些方面提升程序的性能

2013-05-08

android log 文件分析实例

本资源包括 从手机端提取的log 文件 及问题描述,分析思路和解决办法。是一篇很好的log分析日志。

2012-08-07

android 九格图原理 9.png_2.doc

文中具体讲述了九格图的用法及原理。九格图解决了android UI中的一系列问题。比如,列表的背景图一定,但是列表的高度随着列表数据项会发生变化;标题栏的背景,无论横屏还是竖屏,高分辨率还是低分辨率,都能自动填充满,而且不失真等等背景问题。

2012-08-06

Linux设备驱动程序学习

文中详细描述了linux 设备驱动程序开发的基本原理及实例。每一章都配有原码实例讲解。想学习驱动开发的朋友可以下载下来看下。

2012-08-06

android 中常用的系统调用

android 中常用的系统调用,包括音频,通话,短信,地图,视频,GPS,等各种系统调用的实例

2012-07-23

Handler使用相关的三个实例

本资源是Handler的用法的三个例子, 三个例子主要体现了Handler 的两个用法。 用法1,发消息,与其它线程交互。 用法2,发消息,更新UI

2012-07-18

Shell编程.do

Shell有多种版本,在Red Hat Linux 9.0中默认的版本是bash。用户成功地登录系统以后,shell为用户与系统内核进行交互,直至用户退出系统。系统上的所有用户都有一个缺省的 shell。每个用户的缺省shell在系统里的/etc/passwd文件里被指定。

2012-07-10

Dalvik虚拟机简介.doc

Dalvik虚拟机非常适合在移动终端上使用,相对于在桌面系统和服务器系统运行的虚拟机而言,它不需要很快的CPU速度和大量的内存空间。根据Google的测算,64M的RAM已经能够令系统正常运转了。其中24M被用于底层系统的初始化和启动,另外20M被用于高层启动高层服务。当然,随着系统服务的增多和应用功能的扩展,其所消耗的内存也势必越来越大。

2012-07-10

跟我一起写Makefile.pdf

makefile关系到了整个工程的编译规则。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令

2012-07-10

android小游戏快乐数独原代码

快乐数独原代码,有非常详细的注释说明,欢迎下载

2012-05-14

16个经典面试问题回答思路

本文总结了一些常见的面试官爱问的问题,以及如何回答的技巧,相信对你有用……

2011-09-15

编程修养,什么是好的程序员

什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编 程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮 助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。 2、积极向上的态度,有创造性思维。 3、与人积极交流沟通的能力,有团队精神。 4、谦虚谨慎,戒骄戒燥。 5、写出的代码质量高。包括:代码的稳定、易读、规范、易维护、专业。

2011-09-15

常见设计模式的解析和实现

常见设计模式的解析和实现 有C++实现的代码 及UML类关系图

2011-09-14

Google C++编程风格指南

Google的开源项目大多使用C++开发。每一个C++程序员也都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug、难于阅读和维护。 本指南的目的是通过详细阐述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规则可在允许代码有效使用C++语言特性的同时使其易于管理。 风格,也被视为可读性,主要指称管理C++代码的习惯。使用术语风格有点用词不当,因为这些习惯远不止源代码文件格式这么简单。 使代码易于管理的方法之一是增强代码一致性,让别人可以读懂你的代码是很重要的,保持统一编程风格意味着可以轻松根据“模式匹配”规则推断各种符号的含义。创建通用的、必需的习惯用语和模式可以使代码更加容易理解,在某些情况下改变一些编程风格可能会是好的选择,但我们还是应该遵循一致性原则,尽量不这样去做。 本指南的另一个观点是C++特性的臃肿。C++是一门包含大量高级特性的巨型语言,某些情况下,我们会限制甚至禁止使用某些特性使代码简化,避免可能导致的各种问题,指南中列举了这类特性,并解释说为什么这些特性是被限制使用的。 由Google开发的开源项目将遵照本指南约定。 注意:本指南并非C++教程,我们假定读者已经对C++非常熟悉。

2011-09-13

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除