- 浏览: 124802 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
kingbinchow:
android:tonghuaguanxin 写道请问,这个属 ...
修改EditText的光标颜色 -
tonghuaguanxin:
请问,这个属性在代码中如何设置?
修改EditText的光标颜色
http://blog.lytsing.org/archives/39.html
Android的代码风格规则
The rules below are not guidelines or recommendations, but strict rules. Android代码贡献者,如果他们不遵守这些规则,那么一般他们的代码不会被接受。
并非所有现存的代码遵循这些规则,但所有的新代码希望能如此
Java 语言规则
我们遵循标准的Java编码约定。
我们还添加一些规则:
1.异常:不要在没有说明的情况下捕捉和忽略它们。
2.Exceptions : 不要捕捉一般异常, except in library code at the root of the stack.
3.Finalizers :一般不使用它们。
4.Imports : 完全符合引入
Java库规则
这里有一些关于使用android Java库与工具的约定。在某些情况下,该约定在一些重要的方式已经发生了变化,老的代码可能在使用过时的模式或库。当使用这些代码,最好继续保持与已存在的风格一致(参见一致性)当创建新的组件从来不使用废弃库。
Java的风格规则
当所有文件都保持一致的风格时,程序就更容易维护。我们遵循标准的Java编码风格,他们由Sun公司为Java编程语言制定的编码约定,除少数例外,和增加一些。这些风格指南是全面而详细的,在Java社区很常用。
此外,我们执行下面的样式规则:
1.注释/Javadoc :使用标准样式写它
2.简短的方法 :不写超大的方法
3.字段(成员变量):要么是在该文件的顶部,或紧接在使用它们的方法前面。
4.局部变量 :限制作用域
5.引入 :android;第三方按字母顺序排列;java(x)
6.缩进排版 :4个空格,没有制表符(tab)
7.行长度 :100个字符
8.字段命名 : 非公有的,非静态字段以m开头,静态变量以s开头 。
9.括号 :开括号不要独占一行
10.注解 :使用标准的注解。
11.Acronyms are words : Treat acronyms as words in names, yielding XmlHttpRequest , getUrl() , etc.
12.TODO的风格 :“TODO:在这里写描述”
13.一致性 :看看你周围的
14.日志记录 :小心日志记录,它开销很大。
Javatests样式规则
1. 测试方法的命名 :testMethod_specificCase是正确的
--------------------------------------------------------------------------------
Java语言规则
异常:不要忽视
有时很容易编写完全忽略异常的代码,比如:
虽然你可能认为你的代码永远不会遇到这个错误条件或处理它并不重要,忽略像上面的异常会在你的代码中给别人埋下地雷,迟早有一天会被绊倒。原则上,你必须在你代码中处理每一个异常。特殊的处理要视情况而定。
任何时候有人使用空的catch子句,他们应该有一个令人毛骨悚然的感觉。
有一定时候,它实际上是正确的事情,但至少你要想一想。在Java中你无法逃避的令人毛骨悚然的感觉。
- James Gosling
可接受的另外一个方案(为了性能考虑)是:
异常: 不要捕捉一般异常
有时候人们容易为了偷懒,在捕捉异常时会这样做:
--------------------------------------------------------------------------------
Finalizers
它是什么: 当一个对象被垃圾回收时,Finalizers能够去执行某段代码。
优点: 可以方便清理,特别是外部资源。
缺点: 不能保证finalizer什么时候会调用,或甚至根本上没被调用。
--------------------------------------------------------------------------------
Imports
在imports使用通配符
它是什么 :当你想使用foo包中的Bar类,这有两种可能的方式导入它:
1.import foo.*;
2.import foo.Bar;
1#的优点 :大大减少了import声明的数目。
2#的优点 :很明显的看到哪些类实际在用,对于维护者而言,代码更具有可读性。
决定 :使用样式#2 import 所有的Android代码。
一个明确的例外是用于Java标准库(使用java.util .*,java.io. *,等等)和单元测试代码(junit.framework .*)。
--------------------------------------------------------------------------------
注释/Javadoc
所有的文件应该有一个在顶部版权声明。 然后紧接着是包和引入语气,每一块以空白行分隔。再下来是类或接口的声明。 在Javadoc注释,描述的类或接口的用途。
简短的方法
这在一定程度上是可行的,方法应该保持小而直观的反应它的功能。然而得承认,长的方法有时是比较适当的,因此没有死限制放在方法的长度。如果一个方法超过40行,想想是否可以在没有危害程序结构上进行拆分。
--------------------------------------------------------------------------------
局部变量
局部变量的作用范围应保持最小( Effective Java Item 29)。这样,增加代码的可读性和可维护性,降低错误的可能性。
每个变量应该在最里面的代码块声明,括入变量的所有使用。 局部变量应该先声明后使用,尽量在声明局部变量的同时初始化。如果你还没有足够的信息来初始化变量,你应该推迟声明,直到你需要声明它的时候。
循环变量应该for里面声明,除非有令人信服的理由不这样做:
--------------------------------------------------------------------------------
缩进
我们使用4个空格作为块缩进。我们从不使用制表符(tab)。 如有疑问,请与你周围的代码保持一致。我们使用8个空格作为换行缩进,包括函数调用,赋值。
例如,这是正确的:
这是不正确的:
域(Field)命名
■非公有,非静态字段命名以m开头。
■静态域命名以s开头。
■其他字段以小写字母开头。
■public static final 字段(常量) 全部大写,并用下划线连起来。
例如:
花括号
花括号没有独自一行,它们与它前面的代码占同一行,所以:
但是,这是不合规范的:
行长度
每一行代码中的文本应在最多100个字符。
There has been lots of discussion about this rule and the decision remains that 100 characters is the maximum.
例外:如果一个注释行包含一个示例命令或文字网址超过100个字符,该行可能会超过100个字符,方便于剪切与粘贴。
例外:import 行可以超过这个限制,因为人们很少见到他们.这也简化了书写工具。
Java 1.5的注解
Eclipse 代码格式化
你可以导入development/ide/eclipse下的文件,使得Eclipse按照Android代码风格规则。选择 “Window › Preferences › Java › Code Style,使用 “Formatter › Import” ,导入android-formatting.xml,”Organize Imports › Import” 导入 android.importorder.
eclipse tab 设置为4个空格:
Preferences -> General -> Editors -> Text Editors:
Insert spaces for tabs
If you enjoyed this post, make sure you subscribe to my RSS feed!
Android的代码风格规则
The rules below are not guidelines or recommendations, but strict rules. Android代码贡献者,如果他们不遵守这些规则,那么一般他们的代码不会被接受。
并非所有现存的代码遵循这些规则,但所有的新代码希望能如此
Java 语言规则
我们遵循标准的Java编码约定。
我们还添加一些规则:
1.异常:不要在没有说明的情况下捕捉和忽略它们。
2.Exceptions : 不要捕捉一般异常, except in library code at the root of the stack.
3.Finalizers :一般不使用它们。
4.Imports : 完全符合引入
Java库规则
这里有一些关于使用android Java库与工具的约定。在某些情况下,该约定在一些重要的方式已经发生了变化,老的代码可能在使用过时的模式或库。当使用这些代码,最好继续保持与已存在的风格一致(参见一致性)当创建新的组件从来不使用废弃库。
Java的风格规则
当所有文件都保持一致的风格时,程序就更容易维护。我们遵循标准的Java编码风格,他们由Sun公司为Java编程语言制定的编码约定,除少数例外,和增加一些。这些风格指南是全面而详细的,在Java社区很常用。
此外,我们执行下面的样式规则:
1.注释/Javadoc :使用标准样式写它
2.简短的方法 :不写超大的方法
3.字段(成员变量):要么是在该文件的顶部,或紧接在使用它们的方法前面。
4.局部变量 :限制作用域
5.引入 :android;第三方按字母顺序排列;java(x)
6.缩进排版 :4个空格,没有制表符(tab)
7.行长度 :100个字符
8.字段命名 : 非公有的,非静态字段以m开头,静态变量以s开头 。
9.括号 :开括号不要独占一行
10.注解 :使用标准的注解。
11.Acronyms are words : Treat acronyms as words in names, yielding XmlHttpRequest , getUrl() , etc.
12.TODO的风格 :“TODO:在这里写描述”
13.一致性 :看看你周围的
14.日志记录 :小心日志记录,它开销很大。
Javatests样式规则
1. 测试方法的命名 :testMethod_specificCase是正确的
--------------------------------------------------------------------------------
Java语言规则
异常:不要忽视
有时很容易编写完全忽略异常的代码,比如:
void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFormatException e) { } }你绝对不能这样做。
虽然你可能认为你的代码永远不会遇到这个错误条件或处理它并不重要,忽略像上面的异常会在你的代码中给别人埋下地雷,迟早有一天会被绊倒。原则上,你必须在你代码中处理每一个异常。特殊的处理要视情况而定。
任何时候有人使用空的catch子句,他们应该有一个令人毛骨悚然的感觉。
有一定时候,它实际上是正确的事情,但至少你要想一想。在Java中你无法逃避的令人毛骨悚然的感觉。
- James Gosling
可接受的另外一个方案(为了性能考虑)是:
Throw the exception up to the caller of your method. void setServerPort(String value) throws NumberFormatException { serverPort = Integer.parseInt(value); } # Throw a new exception that’s appropriate to your level of abstraction. void setServerPort(String value) throws ConfigurationException { try { serverPort = Integer.parseInt(value); } catch (NumberFormatException e) { throw new ConfigurationException("Port " + value + " is not valid."); } # Handle the error gracefully and substitute an appropriate value in the catch {} block. /** Set port. If value is not a valid number, 80 is substituted. */ void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFormatException e) { serverPort = 80; // default port for server } # Catch the Exception and throw a new RuntimeException. This is dangerous: only do it if you are positive that if this error occurs, the appropriate thing to do is crash. /** Set port. If value is not a valid number, die. */ void setServerPort(String value) { try { serverPort = Integer.parseInt(value); } catch (NumberFormatException e) { throw new RuntimeException("port " + value " is invalid, ", e); }
异常: 不要捕捉一般异常
有时候人们容易为了偷懒,在捕捉异常时会这样做:
try { someComplicatedIOFunction(); // may throw IOException someComplicatedParsingFunction(); // may throw ParsingException someComplicatedSecurityFunction(); // may throw SecurityException // phew, made it all the way } catch (Exception e) { // I'll just catch all exceptions handleError(); // with one generic handler! }你不应该这样做。
--------------------------------------------------------------------------------
Finalizers
它是什么: 当一个对象被垃圾回收时,Finalizers能够去执行某段代码。
优点: 可以方便清理,特别是外部资源。
缺点: 不能保证finalizer什么时候会调用,或甚至根本上没被调用。
--------------------------------------------------------------------------------
Imports
在imports使用通配符
它是什么 :当你想使用foo包中的Bar类,这有两种可能的方式导入它:
1.import foo.*;
2.import foo.Bar;
1#的优点 :大大减少了import声明的数目。
2#的优点 :很明显的看到哪些类实际在用,对于维护者而言,代码更具有可读性。
决定 :使用样式#2 import 所有的Android代码。
一个明确的例外是用于Java标准库(使用java.util .*,java.io. *,等等)和单元测试代码(junit.framework .*)。
--------------------------------------------------------------------------------
注释/Javadoc
所有的文件应该有一个在顶部版权声明。 然后紧接着是包和引入语气,每一块以空白行分隔。再下来是类或接口的声明。 在Javadoc注释,描述的类或接口的用途。
/* * Copyright (C) 2007 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.internal.foo; import android.os.Blah; import android.view.Yada; import java.sql.ResultSet; import java.sql.SQLException; /** * Does X and Y and provides an abstraction for Z. */ public class Foo { ... }--------------------------------------------------------------------------------
简短的方法
这在一定程度上是可行的,方法应该保持小而直观的反应它的功能。然而得承认,长的方法有时是比较适当的,因此没有死限制放在方法的长度。如果一个方法超过40行,想想是否可以在没有危害程序结构上进行拆分。
--------------------------------------------------------------------------------
局部变量
局部变量的作用范围应保持最小( Effective Java Item 29)。这样,增加代码的可读性和可维护性,降低错误的可能性。
每个变量应该在最里面的代码块声明,括入变量的所有使用。 局部变量应该先声明后使用,尽量在声明局部变量的同时初始化。如果你还没有足够的信息来初始化变量,你应该推迟声明,直到你需要声明它的时候。
// Instantiate class cl, which represents some sort of Set Set s = null; try { s = (Set) cl.newInstance(); } catch(IllegalAccessException e) { throw new IllegalArgumentException(cl + " not accessible"); } catch(InstantiationException e) { throw new IllegalArgumentException(cl + " not instantiable"); } // Exercise the set s.addAll(Arrays.asList(args)); But even this case can be avoided by encapsulating the try-catch block in a method: Set createSet(Class cl) { // Instantiate class cl, which represents some sort of Set try { return (Set) cl.newInstance(); } catch(IllegalAccessException e) { throw new IllegalArgumentException(cl + " not accessible"); } catch(InstantiationException e) { throw new IllegalArgumentException(cl + " not instantiable"); } } ... // Exercise the set Set s = createSet(cl); s.addAll(Arrays.asList(args));Loop variables should be declared in the for statement itself unless there is a compelling reason to do otherwise:
循环变量应该for里面声明,除非有令人信服的理由不这样做:
for (int i = 0; i < n; i++) { doSomething(i); } for (Iterator i = c.iterator(); i.hasNext(); ) { doSomethingElse(i.next()); } -------------------------------------------------------------------------------- Imports
--------------------------------------------------------------------------------
缩进
我们使用4个空格作为块缩进。我们从不使用制表符(tab)。 如有疑问,请与你周围的代码保持一致。我们使用8个空格作为换行缩进,包括函数调用,赋值。
例如,这是正确的:
Instrument i = someLongExpression(that, wouldNotFit, on, one, line);
这是不正确的:
Instrument i = someLongExpression(that, wouldNotFit, on, one, line);
域(Field)命名
■非公有,非静态字段命名以m开头。
■静态域命名以s开头。
■其他字段以小写字母开头。
■public static final 字段(常量) 全部大写,并用下划线连起来。
例如:
public class MyClass { public static final int SOME_CONSTANT = 42; public int publicField; private static MyClass sSingleton; int mPackagePrivate; private int mPrivate; protected int mProtected; }
花括号
花括号没有独自一行,它们与它前面的代码占同一行,所以:
class MyClass { int func() { if (something) { // ... } else if (somethingElse) { // ... } else { // ... } } }We require braces around the statements for a conditional. Except, if the entire conditional (the condition and the body) fit on one line, you may (but are not obligated to) put it all on one line. That is, this is legal:
if (condition) { body; // 正确 }
if (condition) body; // 正确
但是,这是不合规范的:
if (condition) body; // 槽糕
行长度
每一行代码中的文本应在最多100个字符。
There has been lots of discussion about this rule and the decision remains that 100 characters is the maximum.
例外:如果一个注释行包含一个示例命令或文字网址超过100个字符,该行可能会超过100个字符,方便于剪切与粘贴。
例外:import 行可以超过这个限制,因为人们很少见到他们.这也简化了书写工具。
Java 1.5的注解
Eclipse 代码格式化
你可以导入development/ide/eclipse下的文件,使得Eclipse按照Android代码风格规则。选择 “Window › Preferences › Java › Code Style,使用 “Formatter › Import” ,导入android-formatting.xml,”Organize Imports › Import” 导入 android.importorder.
eclipse tab 设置为4个空格:
Preferences -> General -> Editors -> Text Editors:
Insert spaces for tabs
If you enjoyed this post, make sure you subscribe to my RSS feed!
发表评论
-
android studio debug 一直加载so文件
2017-06-24 16:15 574以前在debug时,一直很快就可以成功,但最近电脑卡,加上更新 ... -
心形vector drawable
2016-04-21 10:44 608<vector xmlns:android ... -
Gridview的第一个Item点击没反应,点击其他的item OK
2015-08-07 14:56 1667遇到一个前人挖下的大坑,各种没响应的呀,后来发现以下代码有问题 ... -
仿iOS 的AssistiveTouch 按键 Floating Action Button
2015-04-16 14:50 1307FloatButton fb = new FloatBu ... -
Android 常见错误处理
2015-04-03 16:03 9641.could not find "com.baid ... -
Android GirdView 最后一行显示不完整
2015-03-20 18:19 3493Android GridView 设置wrap_content ... -
import android eclipse project to android studio
2014-11-13 11:09 924Export from Eclipse 1.Update y ... -
关于android应用退出的问题(转)
2014-10-06 15:48 1249看到很多关于应用退出的问题,今天在这里为大家简单总结一下,如果 ... -
Canvas.drawTextOnPath 2D绘图
2014-07-23 17:18 705绘制文字效果,如下图 protected void onD ... -
android SAX parse xml
2014-07-17 16:22 625<?xml version="1.0&qu ... -
自定义menu,用PopupWindow截获KeyEvent
2014-07-17 15:49 1248public boolean onKeyDown(int ke ... -
Android 自动结束本层activity,回退到上一层 的intent 设置
2014-06-27 13:08 1997Intent intent = new Intent(); ... -
Android Custom View , can not use custom tag in xml file
2014-06-27 13:04 611add this line: xmlns:custom=&qu ... -
onMeasure()--典型视图度量时间
2013-02-18 15:42 985@Override protected void onMe ... -
AsynTask
2013-02-07 16:25 716... -
修改EditText的光标颜色
2013-01-29 15:02 4175在使用EditText的XML 文件中加入一个属性: and ... -
PopupWindow 的BadTokenException
2012-11-05 15:10 1330进入Activity就弹出PopupWindow 来,结果编译 ... -
android sqlite3 数据类型
2012-08-20 09:54 7100sqlite3中的数据类型 大多数的数据库引擎(到现在据我 ... -
android 入门xml布局文件--转
2012-07-10 15:58 914LinearLayout和RelativeLayout共有属性 ... -
Syntax error, static imports are only available if source level is 1.5
2012-06-05 10:20 1587Question: 工程之前一直正常运行,今早上 突然报出 S ...
相关推荐
"android代码风格包"就是这样一个资源,它提供了统一的编码规范和格式化设置,使得开发人员可以遵循一套一致的规则进行编程,从而提升整个项目的质量。 首先,Android代码风格通常遵循Google提供的Android ...
此外,还可以参考Google的官方Android开发风格指南(Android Style Guide),它提供了更详细的编码规范,包括Java语言规范、XML规范以及项目的组织结构等。遵循这些规范能帮助开发者编写出更加专业且易于维护的代码...
* 代码风格规范是为了让代码更加易于阅读和理解。 * 使用统一的编码风格,避免使用混乱的风格。 注释 * 注释是非常重要的,它可以帮助其他开发者快速了解代码的意图和实现。 * 使用 Java Doc 生成文档注释,以方便...
《Google Android程序设计指南》中的源码能帮助读者通过实践加深理解,通过分析和修改这些代码,可以更好地掌握Android开发的精髓。总之,Android程序设计是一门深度与广度兼具的技术,不断学习和实践才能成为一名...
3. 应用程序基础:Android应用基于Java语言开发,使用aapt工具打包应用程序资源和代码成为APK文件。APK文件是Android平台上用于分发和安装应用程序的文件格式。 4. 应用程序组件:介绍了Android应用中四大核心组件...
【Android编码规范指南】 在Android应用开发中,遵循一套统一的编码规范是非常重要的,它能够提高代码的可读性、可维护性和团队协作效率。这篇文档主要基于Google的Java编程风格,提供了Android编码的一些基本准则...
- Android开发中,Google提供了官方的Android代码风格指南,称为Android Studio的Android Lint工具,它能检查并提示代码中的风格问题。 2. **命名规范** - 类名:使用大驼峰命名法,如ActivityName、FragmentName...
可以根据个人喜好和需求调整代码风格、快捷键、检查规则等设置,以提高开发效率和舒适度。 总之,Android Studio作为现代Android开发的首选工具,提供了全面的开发、调试和优化功能,让开发者能够高效地创建高质量...
此外,指南还为参与者提供了关于代码风格的指导,以确保代码的质量和一致性。 总的来说,Android开源项目指南是一个全面的资源,它不仅帮助开发者和维护者理解Android开源项目的理念和目标,还提供了实用的指导来...
### Android编程指南知识点详解 #### 一、应用程序基础 - Application Fundamentals **1. 关键类** Android 应用程序的基础构建块是一组核心类,它们定义了应用程序的行为和交互方式。 - **Activity**: Activity...
1. **代码风格指南**:Google为Android开发提供了一套官方的代码风格指南,称为"Android Code Style Guidelines"。这套指南包含了命名规范、注释规则、布局结构等方面的具体指导,例如类名应采用名词,变量名应清晰...
Android是一个开放源代码的移动操作系统,它提供了丰富的API供开发者使用。本指南将详细介绍Android应用程序的基本概念和技术要点,特别适合初级开发者入门。 #### 二、应用程序基础 Android应用程序由一系列组件...
"Android-Code-Style-master"可能是一个包含Android代码风格指南和自动化工具的项目,它可能提供了用于检查和格式化代码的配置文件,例如`.editorconfig`和`.gradle`文件,以及可能的Android Lint规则定制。...
### Android Gradle 用户指南知识点详解 #### 一、Gradle构建系统概述 **目标与优势:** - **目标:** - **简化代码与资源复用:**Gradle旨在简化跨项目共享代码和资源的过程,使得开发人员能够更加高效地进行...
### Android开发指南中文版知识点详解 #### 应用程序基础 **关键类** 在Android开发中,有几个核心类是必须了解的,它们分别是`Application`、`Activity`、`Service`、`BroadcastReceiver`和`ContentProvider`。...
在Android开发领域,Android代码是构建应用程序的基础。这个压缩包“Android-master”很可能包含了某个Android项目的源代码,通常这样的命名代表这是一个GitHub仓库的主分支。接下来,我们将深入探讨Android开发中的...
【Android指南针程序】 在移动设备领域,Android操作系统以其开源性和强大的可定制性深受开发者喜爱。本项目专注于创建一个仿小米MIUI系统的指南针应用程序,旨在为用户提供精准、流畅的导航体验。指南针是户外活动...