热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

提升Android开发效率:CleanCode的最佳实践与应用

在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过CleanCode的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。

下面是直接使用SQL语句根据id查询Android SQLite数据库的例子.  



需要自己写sql语句, 自己手动获取结果并装成目标Javabean.

public Tb_outaccount find(int id) {
// db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象Cursor cursor = dbRead.rawQuery("select _id,money,time,type,address,mark from tb_outaccount where _id = ?",new String[] { String.valueOf(id) });// 根据编号查找支出信息,并存储到Cursor类中// int ColumnCount=cursor.getColumnCount();
// String ColumnNames[]=cursor.getColumnNames();if (cursor.moveToNext())// 遍历查找到的支出信息{// 将遍历到的支出信息存储到Tb_outaccount类中return new Tb_outaccount(cursor.getInt(cursor.getColumnIndex("_id")),cursor.getDouble(cursor.getColumnIndex("money")),cursor.getString(cursor.getColumnIndex("time")),cursor.getString(cursor.getColumnIndex("type")),cursor.getString(cursor.getColumnIndex("address")),cursor.getString(cursor.getColumnIndex("mark")));}return null;// 如果没有信息,则返回null}

存在的问题:


以下是使用ORM Bee框架, 重构后, 前后对比的效果代码. 


大大简化了类似重复代码; 提高了编码效率.  不需要每个表都写一遍.

package com.lib.accountsoft.dao;import java.util.List;import org.teasoft.bee.osql.FunctionType;
import org.teasoft.bee.osql.MoreTable;
import org.teasoft.bee.osql.SuidRich;
import org.teasoft.honey.osql.shortcut.BF;
import org.teasoft.honey.util.StringUtils;import com.lib.accountsoft.model.Tb_inaccount;public class InaccountDAO {
// private SQLiteDatabase db=DBOpenHelper.getWritableDB();// 创建SQLiteDatabase对象private SuidRich suidRich=BF.getSuidRich(); //获取SQLiteDatabase,由Bee代劳public InaccountDAO() {}/*** 添加收入信息* * @param tb_inaccount*/public void add(Tb_inaccount tb_inaccount) {// 执行添加收入信息操作
// db.execSQL(
// "insert into tb_inaccount (_id,money,time,type,handler,mark) values (?,?,?,?,?,?)",
// new Object[] { tb_inaccount.getid(), tb_inaccount.getMoney(),
// tb_inaccount.getTime(), tb_inaccount.getType(),
// tb_inaccount.getHandler(), tb_inaccount.getMark() });suidRich.insert(tb_inaccount);}/*** 更新收入信息* * @param tb_inaccount*/public void update(Tb_inaccount tb_inaccount) {// 执行修改收入信息操作
// db.execSQL(
// "update tb_inaccount set money = ?,time = ?,type = ?,handler = ?,mark = ? where _id = ?",
// new Object[] { tb_inaccount.getMoney(), tb_inaccount.getTime(),
// tb_inaccount.getType(), tb_inaccount.getHandler(),
// tb_inaccount.getMark(), tb_inaccount.getid() });suidRich.update(tb_inaccount);}/*** 查找收入信息* * @param id* @return*/public Tb_inaccount find(int id) {// Cursor cursor = db
// .rawQuery(
// "select _id,money,time,type,handler,mark from tb_inaccount where _id = ?",
// new String[] { String.valueOf(id) });// 根据编号查找收入信息,并存储到Cursor类中
// if (cursor.moveToNext())// 遍历查找到的收入信息
// {
// // 将遍历到的收入信息存储到Tb_inaccount类中
// return new Tb_inaccount(
// cursor.getInt(cursor.getColumnIndex("_id")),
// cursor.getDouble(cursor.getColumnIndex("money")),
// cursor.getString(cursor.getColumnIndex("time")),
// cursor.getString(cursor.getColumnIndex("type")),
// cursor.getString(cursor.getColumnIndex("handler")),
// cursor.getString(cursor.getColumnIndex("mark")));
// }
// return null;// 如果没有信息,则返回nullreturn suidRich.selectById(new Tb_inaccount(), id);}/*** 删除收入信息* * @param ids*/public void detele(Integer... ids) {
// if (ids.length > 0)// 判断是否存在要删除的id
// {
// StringBuffer sb = new StringBuffer();// 创建StringBuffer对象
// for (int i = 0; i // {
// sb.append('?').append(',');// 将删除条件添加到StringBuffer对象中
// }
// sb.deleteCharAt(sb.length() - 1);// 去掉最后一个“,“字符db = helper.getWritableDatabase();// 初始化SQLiteDatabase对象
// // 执行删除收入信息操作
// db.execSQL("delete from tb_inaccount where _id in (" + sb + ")",
// (Object[]) ids);
// }suidRich.deleteById(Tb_inaccount.class, StringUtils.toCommasString(ids));}/*** 获取收入信息* * @param start* 起始位置* @param size* 每页显示数量* @return*/public List getScrollData(int start, int size) {
// List tb_inaccount = new ArrayList();// 创建集合对象
// // 获取所有收入信息
// Cursor cursor = db.rawQuery("select * from tb_inaccount limit ?,?",
// new String[] { String.valueOf(start), String.valueOf(size) });
// while (cursor.moveToNext())// 遍历所有的收入信息
// {
// // 将遍历到的收入信息添加到集合中
// tb_inaccount.add(new Tb_inaccount(cursor.getInt(cursor
// .getColumnIndex("_id")), cursor.getDouble(cursor
// .getColumnIndex("money")), cursor.getString(cursor
// .getColumnIndex("time")), cursor.getString(cursor
// .getColumnIndex("type")), cursor.getString(cursor
// .getColumnIndex("handler")), cursor.getString(cursor
// .getColumnIndex("mark"))));
// }
// return tb_inaccount;// 返回集合return suidRich.select(new Tb_inaccount(), start, size);}/*** 获取总记录数* * @return*/public long getCount() {
// Cursor cursor = db
// .rawQuery("select count(_id) from tb_inaccount", null);// 获取收入信息的记录数
// if (cursor.moveToNext())// 判断Cursor中是否有数据
// {
// return cursor.getLong(0);// 返回总记录数
// }
// return 0;// 如果没有数据,则返回0return suidRich.count(new Tb_inaccount());}}


删除多余代码,  代码整洁高效多了!!

package com.lib.accountsoft.dao;import java.util.List;import org.teasoft.bee.osql.SuidRich;
import org.teasoft.honey.osql.shortcut.BF;
import org.teasoft.honey.util.StringUtils;import com.lib.accountsoft.model.Tb_inaccount;public class InaccountDAO {private SuidRich suidRich=BF.getSuidRich(); //获取SQLiteDatabase,由Bee代劳public InaccountDAO() {}/*** 添加收入信息* @param tb_inaccount*/public void add(Tb_inaccount tb_inaccount) {suidRich.insert(tb_inaccount);}/*** 更新收入信息* @param tb_inaccount*/public void update(Tb_inaccount tb_inaccount) {suidRich.update(tb_inaccount);}/*** 查找收入信息* @param id* @return*/public Tb_inaccount find(int id) {return suidRich.selectById(new Tb_inaccount(), id);}/*** 删除收入信息* @param ids*/public void detele(Integer... ids) {suidRich.deleteById(Tb_inaccount.class, StringUtils.toCommasString(ids));}/*** 获取收入信息* @param start 起始位置* @param size 每页显示数量* @return*/public List getScrollData(int start, int size) {return suidRich.select(new Tb_inaccount(), start, size);}/*** 获取总记录数* @return*/public long getCount() {return suidRich.count(new Tb_inaccount());}}

Bee V1.17将全面支持Android环境的数据库操作.


让你学一种ORM框架就可以在JavaWeb和Anddroid两种环境中使用.

-----------------------------------------------------------
 

Bee 是一个简单,易用,功能强大,开发速度快,编码少的 JAVA ORM 框架。连接,事务都可以由Bee框架负责管理. Bee 简化了与DB交互的编码工作量, 是 编码复杂度 为 O(1) 的Java 框架!

Bee简单易用:单表操作、多表关联操作,可以不用写sql,极少语句就可以完成SQL操作;概念简单,10分钟即可入门。
Bee功能强大:复杂查询也支持向对象方式,分页查询性能更高,一级缓存即可支持个性化优化;具有分布式特性。高级要求,还可以方便自定义SQL语句。

码云上的项目首页:

bee: 互联网新时代的Java ORM工具,简单、高效,开发速度快!

bee-springboot: Bee整合Spring Boot,让你瞬间拥有两样快速开发利器!

github:

https://github.com/automvc/bee

相关框架设计信息也可关注微信公众号:软件设计活跃区



推荐阅读
  • 本文由瀚高PG实验室撰写,详细介绍了如何在PostgreSQL中创建、管理和删除模式。文章涵盖了创建模式的基本命令、public模式的特性、权限设置以及通过角色对象简化操作的方法。 ... [详细]
  • 本文介绍了如何通过 Maven 依赖引入 SQLiteJDBC 和 HikariCP 包,从而在 Java 应用中高效地连接和操作 SQLite 数据库。文章提供了详细的代码示例,并解释了每个步骤的实现细节。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 本文深入探讨 MyBatis 中动态 SQL 的使用方法,包括 if/where、trim 自定义字符串截取规则、choose 分支选择、封装查询和修改条件的 where/set 标签、批量处理的 foreach 标签以及内置参数和 bind 的用法。 ... [详细]
  • 本文总结了在使用Ionic 5进行Android平台APK打包时遇到的问题,特别是针对QRScanner插件的改造。通过详细分析和提供具体的解决方法,帮助开发者顺利打包并优化应用性能。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • 利用存储过程构建年度日历表的详细指南
    本文将介绍如何使用SQL存储过程创建一个完整的年度日历表。通过实例演示,帮助读者掌握存储过程的应用技巧,并提供详细的代码解析和执行步骤。 ... [详细]
  • 本文介绍如何通过创建替代插入触发器,使对视图的插入操作能够正确更新相关的基本表。涉及的表包括:飞机(Aircraft)、员工(Employee)和认证(Certification)。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了如何通过多种编程语言(如PHP、JSP)实现网站与MySQL数据库的连接,包括创建数据库、表的基本操作,以及数据的读取和写入方法。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 在使用 DataGridView 时,如果在当前单元格中输入内容但光标未移开,点击保存按钮后,输入的内容可能无法保存。只有当光标离开单元格后,才能成功保存数据。本文将探讨如何通过调用 DataGridView 的内置方法解决此问题。 ... [详细]
author-avatar
梦回大唐2502907957
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有