对Android程序代码规范的一些思考

软件工程期末试题全解析:从UML建模到AI浪潮下的职业思考 软件工程是指导软件开发和维护的工程化方法,其核心在于通过系统化的过程、方法和工具,在预算和时间约束下构建高质量的软件产品。其基本原理涵盖了从需求分析、系统设计到测试维护的全生命周期管理。掌握软件工程对于应对复杂系统开发、保障软件质量、实现高效团队协作具有关键的技术价值,广泛应用于金融、电商、物联网及企业级应用开发等场景。在当前的AI浪潮下,软件工程人才更需夯实UML建模、设计模式等基础能力,以应对自动化工具带来的职业挑战。本文以典型的期末试题为切入点,深入解析了开发模型对比、UML类图与顺序图绘制等核心考点 阅读详情
  • 深切体会到,一段可读性代码对于团队的重要性
  • 糟糕的代码会增加设备的资源开销
  • 不规范的代码会增加团队间的沟通成本

故在此文章中进行思考与总结



Java

1、尽量少使用状态标志位,对使用到的标志位,一定要说明在各种场景下的作用

在这里插入图片描述

  • Android应用层,Java主要负责控制程序的逻辑
  • 常见的就是定义一个int、boolean标志位,配合if、switch控制流程
  • 在程序中总是会看到有些复杂的模块,各种标志位,有些标志位的作用页甚至重合了
  • 在情况复杂的时候,标志位之间也可能会冲突,需要组合考虑置位问题
  • 多线程也会有影响
  • 在理解、设计程序的时候,总是惦记着这些状态位,怪烦的

在这里插入图片描述

  • 在记录程序状态时,尽量复用已有的标志位
  • 对影响程序逻辑走向的标志位进行整理,汇总
  • 可以抽象一个Status状态类去管理
  • 对于每种状态位都要说清楚各种情况下的作用
  • 遇见的坑也要写出来

2、方法参数尽量简洁、准确

我就是想启动一个Activity而已…

  • 传递参数的目的在于传递信息,方法内部如果拿到的是一个复杂数据类型,需要转换
  • 例如上图的List<Good> goodList,其实方法内部只需要集合元素数量
  • action和mode作用重合

  • 参数列表尽量简短
  • 参数设计尽量准确

3、尽量使用 if-return 代替 if-else 结构

在这里插入图片描述

  • 使用if-else控制逻辑分支时,经常会导致代码不断缩进
  • 不写注释,就更难于理解逻辑

在这里插入图片描述

  • 对程序的理解,就是“至顶向下,逐步细化”的过程
  • 对于分支情况的拆分、汇总、处理,有助于理解程序,加强程序健壮性

4、不要对方法进行多次调用,尽量使用变量保存方法返回值

在这里插入图片描述

  • 方法的执行对应于虚拟机Java栈中栈帧的出栈、入栈等指令
  • 多次调用相同方法,多次执行出栈、入栈指令,会造成多余的开销
  • 依赖于方法的返回结果,容易造成NullPointer问题

在这里插入图片描述

  • 使用变量保存方法执行结果
  • 对变量执行判空,避免NullPointer问题
5、不要链式调用方法来实现逻辑

在这里插入图片描述

  • 项目中总是见到这样的链式调用,甚至更长
  • 其稳定性是建立在每一个方法的执行结果不为空的情况下
  • 其中某一个环节没有做判空处理,就会crash

  • 对方法的执行结果,使用包装器类Boolean、Integer来保存,这样可以兼容方法返回为空的情况
  • 对方法调用的结果进行判空

6、switch分支需要使用注释

在这里插入图片描述

  • switch每一条分支都要用注释标明作用
  • 包括default分支



XML

1、每个节点都需要使用注释

在这里插入图片描述

  • 项目中UI复杂的页面XML结构,也许比这还要复杂
  • 接手此界面,只有通过配合控件id来理解结构

在这里插入图片描述

  • 实现、优化UI也要建立在理解透彻当前UI的前提下
  • 配合注释,对于控件的分层结构、任务职责就可以快速地梳理、归纳
2、节点Id中可以加入当前文件名的一部分
  • 经常有不同组件使用同一id的情况,例如支付页、购物车页面的提交按钮
  • 虽然不会有编译问题,但是能规范去写,为什么要偷这么几秒钟的懒呢?

在这里插入图片描述

  • 控件id中前部分,使用当前文件名的一部分
  • 这种方式不适合公共组件
技术选型深度解析:Hermes引擎与Openclaw工具的核心差异与决策框架 在软件开发中,技术选型是决定项目成败的关键环节,其核心在于理解不同工具的核心定位与设计目标。JavaScript引擎作为代码执行的基础运行时,其优化方向直接影响应用性能,例如通过AOT(提前编译)技术提升启动速度。而数据抓取框架则建立在运行时之上,专注于解决网络I/O、解析算法等特定领域问题,旨在提升业务吞吐量。两者的技术价值截然不同:前者优化微观执行效率,是性能加速器;后者提供高层抽象,是领域问题解决者。在应用场景上,移动端React Native应用的启动优化与服务器端的大规模数据抓取或自动化业务流程几 阅读详情

相关推荐

细说反射,Java 和 Android 开发者必须跨越的坎

写作是门手艺,笑对需要勇气。 写下这个题目的时候,我压力比较大,怕的是费力不讨好。因为反射这一块,对于大多数人员而言太熟悉了,稍微不注意就容易把方向写偏,把知识点写漏。但是,我已经写了注解和动态代理这两个知识点的博客,阅读量还可以,这两个知识点是属于反射机制中的,现在对于注解和动态代理息息相关的反射知识基础我倒是退缩了,所以说看起来很普通的东西,其实真的要一五一十地把它的门道说才方显功力。我们经...

frank 的专栏 5万+

多线程基础知识梳理

多线程–Java中一种最基本的并发模型 文章目录多线程--Java中一种最基本的并发模型1.多线程基础:"同时"运行多个任务2.创建新线程:继承Thread或实现Runnable3.线程的状态:start()与run()4.中断线程:调用interrupt()方法或使用标志位判断5.守护线程:天塌我不倒,除非JVM结束6.线程同步:保持操作原子性7.同步方法:synchronized关键字8.死锁...

君子藏器于身,待时而动 688

YOLOv5模型转换陷阱:从PT到RKNN的置信度异常与乱框问题深度解析

本文深度解析了YOLOv5模型从PT到RKNN转换过程中的置信度异常与检测框错乱问题,揭示了NPU硬件特性与模型结构不匹配的根本原因。通过详细的解决方案和实操步骤,包括模型修改、转换流程配置和验证技巧,帮助开发者有效解决这一常见部署难题,提升模型在瑞芯微芯片上的推理性能。

weixin_29062255的博客 907

iOS开发细节 | "if else" VS "if return"

背景 最近敲代码的时候对if else和if return有点纠结,因为这两种写法可以互换,最开始我是用的if else,后面看别人的代码很多用的if return,然后我也开始用if return,然而慢慢我感觉用if return好像有时还不如用if else来得更直观形象。于是我请教了一下老司机。 问题如下: if else与if return的选择问题 这两种写法可

iOS学习的博客 1180

稳定性性能系列之十五——系统稳定性监控体系建设:从指标到预警的完整方案

深入探讨Android系统稳定性监控体系的设计与实现,涵盖指标体系设计、数据采集方案、异常检测算法、预警响应机制,并提供完整的监控平台搭建实践。

Cheson的专栏 1361

【100%通过率】华为OD机试真题 C 实现【最多等和不相交连续子序列】【2022.11 Q4 新题】

给定一个数组,我们称其中连续的元素为连续子序列,称这些元素的和为连续子序列的和。数组中可能存在几组连续子序列,组内的连续子序列互不相交且有相同的和。求一组连续子序列,组内子序列的数目最多。输出这个数目。

MISAYAONE的博客 1万+

2020-12-9 Android增加标志位用以判断方式(组件化开发)

主要应用位置:通过标志位改变一个view什么时候显示,或者将一些功能暂时留着但不显示也可通过标志位来区别是否显示。 也可以用于获取String 设置。 config.gradle中加入全局标志位 如: conf = [ is_market:true, is_show:false ] 2.在一个模块中的build.gradle 中用buildConfigField 来获取并储存值 如 defaultConfig { minSdkVe

weixin_41422638的博客 580

史上最详细的sqlmap使用教程

sqlmapsqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等Sqlmap采用了以下5种独特的SQL注入技术基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。

大河之犬的博客 5万+

Android通过设置标志位让线程停止

如何在线程停止运行 ,整体来说还是设置标志位使线程停止还是比较合理的,代码如下: class MyThread implements Runnable { private boolean flag = true; @Override public void run() { // TODO Auto-generated method stub int i = 0; ...

恬静释然的博客 458

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3815

第六节 LLaVA模型数据处理源码解读(input_ids/labels/attention_mask/image,上篇)

本篇文章直接介绍llava模型数据加工部分,整体结构说明llava多模态模型输入数据格式,其中包含input_ids/labels/attention_mask与image格式,并给出对应代码位置与整个数据加工流程。最重要,通过debug给出数据解释与代码解读,也通过一个真实数据给出模型输入格式说明。当你阅读完此篇文章,绝对透彻理解llava数据加工过程与内容。显然,一篇博客是无法呈现整个数据细节,我将继续下篇博客呈现数据细节处理。result = input.ne(3) # torch.ne函数调用。

weixin_38252409的博客 3196

Android编程之Listener侦听的N种写法及实现原理

写下这个题目时突然想起鲁迅笔下的孔乙已,茴香豆的几种写法,颇有些咬文嚼字的味道。虽然从事手机编程多年,但一直使用的是C和C++编程,由于安卓早期只支持JAVA开发,所以对于时下如火如荼的安卓系统,我一直观之而未入之。现在由于工作需要开始研究安卓编程,由于以前主要使用C语言,乍遇JAVA,在思考方式上,写法上,编程规范上所遇问题颇多。单单一个Listener方法,在是否使用匿名类匿名对象时...

asm2826的博客 218

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

从传统业务到 AI Skill:产品经理也能看懂的能力改造指南(含完整案例)

专注于编程、AI、人工智能等多个领域内容研究和分析 646

我的大学之Android系统应用层软件设计系列NO.7

视频播放器(实现简单的视频播放器) 一、实验目的 1.综合应用课程知识。 2.掌握App开发流程及相关工具。 3.设计一个基于Android平台的简单视频播放器。 二、实验环境 1.jdk1.8.0_151以上 2.Android Studio3.3以上 3.Android 8.0(API level 26) 4.墨刀原型设计工具 5.WhiteStarUML 三、项目分析 1.需求分析 软件功能简介 (1) 能够播放3gp, .mp4等文件; (2) 能正常启动,退出; (3) 能够在手机上使用该系统;

PROMISE_Ww的博客 419

微信小程序|基于小程序实现人脸识别对比

此文主要通过小程序实现对比人脸相似度,并返回相似度分值,可以基于分值判断是否为同一人。人脸登录、用户认证等场景都可以用到。

商务合作 / 项目定制 / 学习交流。个人vx:lovely_wml 2万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

如何正确的对待Android学习

有些人一辈子就那么过去了,从来很少思考复杂的问题,也没有什么思想。而写作是需要灵感和思想的,只是会写字,写不出来好的文章。同样的道理,有些人学安卓,只是掌握了基本的API,却怎么也写不出好的程序来。然后他们不知道应该怎么做,但是又不甘落后,索性把iOS开发、Windows开发,各种程序API都学一遍,而始终只能做出来一些很简单的东西。

凉菇凉的博客 412

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

listener的多种写法

写下这个题目时突然想起鲁迅笔下的孔乙已,茴香豆的几种写法,颇有些咬文嚼字的味道。虽然从事手机编程多年,但一直使用的是C和C++编程,由于安卓早期只支持JAVA开发,所以对于时下如火如荼的安卓系统,我一直观之而未入之。现在由于工作需要开始研究安卓编程,由于以前主要使用C语言,乍遇JAVA,在思考方式上,写法上,编程规范上所遇问题颇多。单单一个Listener方法,在是否使用匿名类匿名对象时,就是各种

Xiao 1033

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

[Android&分享]Android学习工作总结

[size=medium]本文转自[color=darkred]http://www.cnblogs.com/carlosk[/color] 零零碎碎的总结 1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍. 2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来. 3.要有自己的知识库,可以是...

ymxcywl2008的博客 237

二十六个月Android学习工作总结(2013-05-02更新) ...

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34033624的博客 134

编程学习心得

昨天在网上搜安卓学习方法,看了一篇别人的文章,觉得里面有些内容还是不错的,于是摘抄过来。 1.看android技术书籍最快的学习方法,先通读一次.然后把书本上的demo一个一个写出来.不要觉得太容易不去写.很多东西都是这样,看起来简单,但做起来难.最后再对照自己写出来的程序代码去理解书本的意思. 2.每次做完一个项目,要强迫自己做总结,通过这个项目,我学到了什么新技术?犯了哪些SB...

ecjtu_lyc的专栏 130

✅从69%到7%‼️专科毕业论文的范文大全

大家好,今天来聊聊专科毕业论文的范文大全,希望能给大家提供一点参考。专科毕业论文的范文大全。

chatgpt002的博客 339

成为代码大神的必备素养

最近几年的android编程感悟与经验现总结一下,看大家有没有类似感受。这里主要我主要是抛个砖,有玉的尽管上哈……   1.客户端的功能逻辑不难,UI界面也不难,但写UI花的时间是写功能逻辑的两倍.  2.写代码前的思考过程非常重要,即使在简单的功能,也需要在本子上把该功能的运行过程写出来.(找到自己最适合的思维模型创建软件)  3....

u011005398的博客 332
上一篇: Java学习笔记(四)String、StringBuilder、StringBuffer
下一篇: 使用editor-folder,结合Live Templates,快速生成AS可折叠空间
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值