安卓开发规范整理

       开始学习安卓的时候,对开发中的一些规范都不是很清楚,往往是按照自己的想法来做,最典型的就是命名,没有任何规范,到最后的结果是代码写完了自己回头看都蒙,那么后期维护起来就很难,如果自己一个人开发还好,可是如果一个项目是团队分工合作,这样让你的同事去看你的代码就更加吃力了,因为大家之间的编程方式不一样,所以,在开发过程中,命名规范统一尤为重要,最好是团队中统一好大家命名方法,这样对于日后的工作会轻松很多。

       提醒:在命名规范的统一下,在加上注释,这样日后维护会高效快捷好多。

1.命名基本原则
    在面向对象编程中,对于类,对象,方法,变量等方面的命名应该本着描述性以及唯一标识性这两大特征来命名,才能保证资源之间不冲突,并且每一个都便于记忆。

命名原则是:使名称足够长以便有一定的意义,并且足够短以避免冗长。

2.命名基本规范

2.1.编程基本命名规范 

1避免难懂的名称,如属性名xxK8,这样的名称会导致多义性。   
2 在面向对象的语言中,在类属性的名称中包含类名是多余的,如Book.BookTitle,而是应该使用Book.Title。   
3在允许函数重载的语言中,所有重载都应该执行相似的函数。 

4使用动词-名词的方法来命名对给定对象执行特定操作的例程,如CalculateInvoiceTotal()(例程是某个系统对外提供的功能接口或服务的集合)   

5只要合适,在变量名的末尾或开头加计算限定符(AvgSumMinMaxIndex)。 
6在变量名中使用互补对,如min/maxbegin/endopen/close。  

7布尔变量名应该包含Is,这意味着Yes/No 或 True/False 值,如 fileIsFound。   

8)即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名  称。仅对于短循环索引使用单字母变量名,如 或 j。   

9)为了帮助区分变量和例程,对例程名称使用Pascal大小写处理 (CalculateInvoiceTotal),其中每个单词的第一个字母都是大写的。对于变量名,使用 camel大小写处理 (documentFormatType),其中除了第一个单词外每个单词的第一个字母都是大写的。   

10)不要使用原义数字或原义字符串,而是使用命名常数,NUM_DAYS_IN_WEEK ,以便于维护和理解。  

2.代码书写规范 

(1)java代码中不出现中文,最多注释中可以出现中文

(2)使用shape和selector

(3)图片尽量分拆成多个可重用的图片

(4)服务端可以实现的,就不要放在客户端

(5)引用第三方库要慎重,避免应用大容量的第三方库,导致客户端包非常大

(6)处理应用全局异常和错误,将错误以邮件的形式发送给服务端

(7)使用静态变量方式实现界面间共享要慎重

(8)不要重用父类的handler,对应一个类的handler也不应该让其子类用到,否则会导致message.what冲突

(9)strings.xml中使用%1$s实现字符串的通配

(10)复杂布局使用RelativeLayout

(11)自适应屏幕,使用dp替代pix

(12)使用animation-list制作动画效果

(13))建立标准的缩进大小(如四个空格),并一致地使用此标准。用规定的缩进对齐代码节。  

(14)在发布源代码的硬拷贝版本时使用特定的字体以及字号(新宋体、小五号)。

英文缩写原则:
较短的单词可通过去掉元音形成缩写
较长的单词可取单词的头几个字母形成缩写
此外还有一些约定成俗的英文单词缩写.

下面为常见的英文单词缩写:

名称

缩写

icon  

ic (主要用在app的图标

color  

cl主要用于颜色值

divider

di主要用于分隔线,不仅包括Listview中的divider,还包括普通布局中的线

selector

sl主要用于某一view多种状态,不仅包括Listview中的selector,还包括按钮的selector

average

avg

background  

Bg主要用于布局和子布局的背景

buffer

buf

control

ctrl

delete

del

document 

doc

error

err

escape

esc

increment

inc

infomation

info

initial 

init

image

img

Internationalization

I18N

length

len

library

lib

message

msg

password-

pwd

position

pos

server

srv

string

str

temp

tmp

window

wnd(win)


程序中使用单词缩写原则:不要用缩写,除非该缩写是约定俗成的。

5  变量(variables)采用小驼峰命名法。类中控件名称必须与xml布局id保持一致。

用统一的量词通过在结尾处放置一个量词,就可创建更加统一的变量,它们更容易理解,也更容易搜索。例如,请使用strCustomerFirststrCustomerLast,而不要使用strFirstCustomerstrLastCustomer
量词列表:量词后缀说明
First 
 一组变量中的第一个
Last  
 一组变量中的最后一个
Next  
 一组变量中的下一个变量
Prev  
 一组变量中的上一个
Cur   
 一组变量中的当前变量
 
6  
常量(Constants)全部大写,采用下划线命名法.例如:MIN_WIDTH


7  
资源文件(图片drawable文件夹下):全部小写,采用下划线命名法,加前缀区分

命名模式:activity名称_逻辑名称/common_逻辑名称

如果有多种形态如按钮等除外如btn_xx.xml(selector)

名称

功能

btn_xx

 按钮图片使用btn_整体效果selector

btn_xx_normal

 按钮图片使用btn_正常情况效果

btn_xx_press

 按钮图片使用btn_点击时候效果

bg_head

 背景图片使用bg_功能_说明

def_search_cell

 默认图片使用def_功能_说明

icon_more_help

 图标图片使用icon_功能_说明

seg_list_line

 具有分隔特征的图片使用seg_功能_说明

sel_ok

 选择图标使用sel_功能_说明

命名后缀:

后缀

说明

unit

 在使用xmltilemode来配图片时,element图片使用此后缀

nor

 图片的状态,代表普通状态

hl

 图片的状态,代表高亮状态

press

 图片的状态,代表按下状态

select

 图片的状态,代表其所占的view被选中

unselect

 图片的状态,代表其所占的view没有被选中

 

 

 

 

 

 

 

 

 

    资源布局文件(XML文件(layout布局文件)):

 全部小写,采用下划线命名法

1)contentview命名, Activity默认布局,以去掉后缀的Activity类进行命名。不加后缀

       功能模块.xml

       例如:main.xmlmore.xml、settings.xml

        或则:activity_ 功能模块 .xml

        例如:activity_main.xmlactivity_more.xml

2)Dialog命名:dialog_描述.xml

       例如:dlg_hint.xml

2)PopupWindow命名:ppw_描述.xml

       例如:ppw _info.xml

3). 列表项命名listitem_描述.xml

       例如:listitem_city.xml

4).包含项:include_模块.xml

       例如:include_head.xmlinclude_bottom.xml

5).adapter的子布局:功能模块_item.xml

       例如:main_item.xml

11   layout中的id命名

命名模式为:view缩写_模块名称_view的逻辑名称



深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值