Android journey 1@关于编码风格和命名规范

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
/*
* 1.关于编程风格:每一位程序猿可能都有自己独特的编程风格,但是有些规则是大家都必须遵守的,特别
*   是在工作的过程中,良好的代码风格能大大提高代码本身的可阅读性和维护性,也更有利于别人修改你
*   的代码。风格问题涉及到的都是细节相关的问题,读者朋友们或许都听过“细节决定成败”这句话,这句话
*   在这里同样生效,不过是换了种意思,就是“细节体现你的专业程度”,所以作为一名程序猿,我们应该从
*   编写代码的训练中养成良好的编码习惯,如命名规范,排版规范,写好注释等。下面具体说明下:
*/
/*
* 1)整个Project相关内容的目录规范:(通常可以包含以下几个文件夹)
*    #.Requirement Doc: project的需求文档说明
*    #.Design:有关设计方面的说明
*    #.Planning&Log:计划、日志、会议等
*    #.Test:测试及其报告
*    #.Study:学习资料及demo
*    #.Deployment:发布,部署
*    #.src: 源代码
*    #.help:帮助文档
*    #. ...(根据自己需求添加合适文档)
*    注意事项:在IDE建立project的时候,包即目录(java),包名全小写,且一般不超过3层,命名为:【公司】.【项目】.【模块】
*/
/*
* 2)命名规范:
*    #、Pascal命名法:每个单词首字母大写,其余小写,如“ActivityDemo”,主要应用于:文件名,普通类名,构造函数等
*    #、Camel命名法:第一个单词全小写,其余单词按pascal命名,如“myName”,主要应用于:方法名(动宾短语),普通函数名等
*    #、匈牙利命名法(使用前缀,后缀命名):如对于整型变量,可以“int intMyAge;”
*    #、下划线命名法:主要在常量(全大写)中使用,分隔两个不同单词
*    其他常见命名:私有成员变量:“mMyName”;静态变量:“sMyName”;方法参数:“pMyName”;
*    当然命名规则的使用主要看已有项目的要求,若新启动一个项目,编码前团队必须先统一命名规范
*/
/*
* 3)其他需要注意的地方:
*   1、一个方法不超过35行代码
*   2、不要去修改机器自动生成的代码
*   3、final String取代String,即不要直接写字符串
*   4、循环语句中不用return
*   5、属性用set(),get()方法操控
*   6、不要再系统生成函数中写复杂代码,复杂代码通常用函数调用解决
*   7、虽然class能搞定一切,但使用接口暴露信息会更好
*   8、switch语句中无论如何都要有default
*   9、同类的import包放在一起
*   ...<br>*
*/
//下面看一下Android源码中的代码:
 
/*
 * Copyright (C) 2006 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 android.app;
 
import com.android.internal.app.ActionBarImpl;
import com.android.internal.policy.PolicyManager;
 
import android.os.Build;
import android.os.Bundle;
import android.os.UserHandle;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.method.TextKeyListener;
import android.util.AttributeSet;
import android.util.EventLog;
 
/**可在注释中嵌入HTML标签,在生成javadoc的时候控制各种属性等
 * An activity is a single, focused thing that the user can do.  Almost all
 * activities interact with the user, so the Activity class takes care of
 * creating a window for you in which you can place your UI with
 * {@link #setContentView}.  While activities are often presented to the user
 * as full-screen windows, they can also be used in other ways: as floating
 * windows (via a theme with {@link android.R.attr#windowIsFloating} set)
 * or embedded inside of another activity (using {@link ActivityGroup}).
 *
 * There are two methods almost all subclasses of Activity will implement:
 *
 * <ul>
 *     <li> {@link #onCreate} is where you initialize your activity.  Most
 *     importantly, here you will usually call {@link #setContentView(int)}
 *     with a layout resource defining your UI, and using {@link #findViewById}
 *     to retrieve the widgets in that UI that you need to interact with
 *     programmatically.
 *
 *     <li> {@link #onPause} is where you deal with the user leaving your
 *     activity.  Most importantly, any changes made by the user should at this
 *     point be committed (usually to the
 *     {@link android.content.ContentProvider} holding the data).
 * </ul>
 ...
 */
public class Activity extends ContextThemeWrapper
        implements LayoutInflater.Factory2,
        Window.Callback, KeyEvent.Callback,
        OnCreateContextMenuListener, ComponentCallbacks2 {
    private static final String TAG = "Activity";
    private static final boolean DEBUG_LIFECYCLE = false;
 
    /** Standard activity result: operation canceled. */
    //常量命名
    public static final int RESULT_CANCELED    = 0;
    /** Standard activity result: operation succeeded. */
    public static final int RESULT_OK           = -1;
    /** Start of user-defined activity results. */
    public static final int RESULT_FIRST_USER   = 1;
 
    static final String FRAGMENTS_TAG = "android:fragments";
 
    private static final String WINDOW_HIERARCHY_TAG = "android:viewHierarchyState";
    private static final String SAVED_DIALOG_IDS_KEY = "android:savedDialogIds";
    private static final String SAVED_DIALOGS_TAG = "android:savedDialogs";
    private static final String SAVED_DIALOG_KEY_PREFIX = "android:dialog_";
    private static final String SAVED_DIALOG_ARGS_KEY_PREFIX = "android:dialog_args_";
 
    private static class ManagedDialog {
        Dialog mDialog;
        Bundle mArgs;
    }
    private SparseArray<ManagedDialog> mManagedDialogs;
 
    // set by the thread after the constructor and before onCreate(Bundle savedInstanceState) is called.
    //私有变量命名
    private Instrumentation mInstrumentation;
    private IBinder mToken;
    private int mIdent;
 
    static final class NonConfigurationInstances {
        Object activity;
        HashMap<String, Object> children;
        ArrayList<Fragment> fragments;
        HashMap<String, LoaderManagerImpl> loaders;
    }
    /* package */ NonConfigurationInstances mLastNonConfigurationInstances;
     
    private Window mWindow;
 
    /**
     * Change the intent returned by {@link #getIntent}.  This holds a
     * reference to the given intent; it does not copy it.  Often used in
     * conjunction with {@link #onNewIntent}.
     
     * @param newIntent The new Intent object to return from getIntent
     *
     * @see #getIntent
     * @see #onNewIntent
     *自定义javadoc标签
     *@author ..
     *@date  ..
     *@modify  ..(who,when..)
     */
    public void setIntent(Intent newIntent) {
        mIntent = newIntent;
    }
1
<br><br>
posted @   Allen-Peng Yu  阅读(261)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示