Java基础,保持编程设计风格,你也能成就大师风范

1 前言

很多时候,开发人员都不太注意自己的编程风格,他们把主要精力都放到了功能的实现上。这本来就是无可厚非的,但是不得不提醒的是好的编程设计风格同样也至关重要。

一个杂乱无序的程序代码让人看后有一种心烦意乱的感觉,因此抱怨、怀疑开发人员的素质和技术水平。如果这个系统想持续移交下去的可能性就几乎没有了,即便是原来人马长此以往也会茫然无措。这也是造成软件公司的人员流动频繁的一个因素。如果软件因无法继续开发、维护而半途夭折,这给企业带来的损失是不言而喻的。

因此,从近期利益来看是应该着眼于功能的实现,虽能解一时之渴,而不思长远之计,将会损失惨重!很多优秀公司,宁愿培养没有实际开发经验的员工,也不愿和养成不良设计风格的开发人员共事。因为,优秀的软件企业都有自己一套健全、成熟的程序设计风格规范文档,用以规范开发人员编写代码的风格。

下面就详细介绍Java编程设计时应该注意的书写格式,应用好这些格式也能写出大师级别的代码。

2 源文件

Java文件分为Java源文件和Java字节码文件两种类型。

文件类型 文件后缀
Java源文件 .java
Java字节码文件 .class

Java源文件由开发人员创建,Java字节码文件是通过Java虚拟机编译Java源文件生成的。我们所说的编程设计风格是对Java源文件而言。在Java源文件中应该包含一个单一的类或接口。它由被空行分割而成的段落以及标识每个段落的可选注释共同组成。通常来讲,一个Java源文件不应该超过2000行。

Java 源文件还遵循以下规则:

开头文件注释
包名和引入声明
类或接口声明

2.1 文件注释

所有的Java源文件都应该在开头有一段注释,其中包括类名、日期、功能和版权等。这些注释信息是为了生成Java API标准文档做准备的。

/*
 * @ClassName: 类名
 * @Description: 功能说明
 * author: 作者
 * @date: 日期
 * Copyright (c): 版权
 */

2.2 包和引入

我们在做Java开发时经常会引入(import)Java核心类或第三方软件厂商的类。一般情况下,这些类都是封装在一个包(package)里面。包的出现使类有了空间上的划分。如下代码所示:

package com.fs.core.util;

import java.util.Collection;

在Java语言中包的命名规则如下所示:

包名必须独一无二不可重复
包名应该是小写的ASCII字母
包名一般由域名后缀+公司域名+功能模块+其它组成
例如:

com.baidu.util;
java.lang
org.springframework.boot.SpringApplication

2.3 缩进排版

Java源文件一般是以四个空格键为单位作为缩进排版的一个单位。当然这并没有权威的文献作为参考,只是目前普遍认为比较清晰合理的格式。

2.4 行长度和换行

一般来说Java的代码行长度应该小于80个字符,这是因为目前很多终端和工具不能很好的处理。建议在70个字符左右。

当完整的一行代码不能在一行很好的排版时,我们可以根据下面的规则进行拆行编排:

在逗号后换行
在运算符前换行
换行的代码应该与同级别的代码行左对齐
如果换行出现差距较大且混乱时,我们可以适当采用Tab键(8个空格)处理

2.5 命名规则

类或接口
类或接口的的命名,第一个字母大写,在多个单词混合的情况下,第一个单词后的所有单词的第一个字母大写,其余字母小写,代码示例:

//类
public class SysUser{
    
    
    
}
//接口
public interface SysUserDao {
    
    

}

方法
方法的命名,第一个字母小写,在多个单词混合的情况下,第一个单词后的所有单词的第一个字母大写,其余字母小写,代码示例:

 boolean addUser(SysUser sysUser);

 List<SysUser> getList();

如果该方法在软件产品的不断升级中已经不建议使用了,可以在方法声明注释部分下添加注解@deprecated。

变量
变量命名规则是,除常规变量外,第一个字母小写,在多个单词混合的情况下,第一个单词后的所有单词的第一个字母大写,其余字母小写。

private String userName;
常量命名规则是,一般采用大写字母,单词之间用下划线“_”分割,

private static final int DEFAULT_POOL_SIZE=10

2.6 语句编写规则

在Java编程设计中,语句按其自身特点可以分为:简单语句与复合语句。

简单语句
简单语句一般包括单行计算语句、赋值语句和返回语句。它们共同的特点是仅占用一个代码行完成相关操作。一行出现多个简单语句是不可取的。

复合语句
复合语句可以分为:分支语句、循环语句和异常语句。

if else语句为了代码更加安全和清晰,建议代码块为单行的语句也通过{}将其闭合。

 if (condition) {
    
     
    statements; 
 }

 if (condition) {
    
     
    statements; 
 } else {
    
     
     statements; 
 }

 if (condition) {
    
     
     statements; 
 } else if (condition) {
    
     
     statements; 
 } else{
    
     
    statements; 
 }

for 语句的初始化或更新子句中使用逗号时,避免因使用三个以上变量,而导致复杂度提高。

 for (initialization; condition; update) {
    
     
    statements; 
 }

2.7 空行应用规则

空行将逻辑相关的代码段分隔开,以提高可读性。

使用两个空行隔开
在同一个源文件中类声明和接口声明之间

使用一个空行隔开
两个方法之间;方法内部的局部变量和方法的第一条语句之间;块注释和行注释前;在一个方法的两个逻辑段之间;

3 码农来洞见

下面的例子是一个用户管理的业务类,展示了如何合理布局一个包含单一公共类的Java源程序。(编辑器代码排版可能会出现错乱,仅供参考)

/*
 * http://www.apache.org/licenses/LICENSE-2.0
 * Copyright (c) 2021 fullset
 * @ClassName SysUserService
 * @author 码农洞见
 * @date 2021/6/5 10:52
 * @Description 用户管理
 */
package com.fs.base.service;

import com.fs.orm.entity.SysUser;
import com.fs.orm.vo.form.SysUserForm;
import com.github.pagehelper.PageInfo;

import java.util.List;
import java.util.Map;

public class SysRoleServiceImpl implements SysRoleService {
    
    

    /**
     * 获取全部用户
     * @return
     */
    List<SysUser> getAll(){
    
    
        QueryWrapper qWrapper = new QueryWrapper();
        //过滤条件
        qWrapper.eq("is_deleted", 0);
        return sysUserDao.getList(qWrapper);
    }
    
    /**
     * 添加用户
     * @return
     */
    SysUserForm addUser(SysUserForm sysUserForm) {
    
    
        SysUser sysUser = new SysUser();
        BeanUtil.copyAttribute(sysUserForm, sysUser);
        boolean result;
        try {
    
    
            result = sysUserDao.addUser(sysUser);
        }catch (Exception e){
    
    
            throw new Exception("sql语法错误!");
        }
        if(!result){
    
    
            throw new BizException(BizExceptionEnum.SYS_USER_ADD_ERROR);
        }
        return sysUserForm;
    }

    /**
     * 编辑用户表单
     * @return
     */
    SysUserForm editForm(Long id){
    
    
        SysUser sysUser = new SysUser();
        BeanUtil.copyAttribute(sysUserForm, sysUser);
        try {
    
    
            sysUser = sysUserDao.editUser(sysUser);

        }catch (Exception e){
    
    
            // throw new Exception("sql语法错误!");
        }
        return sysUserForm;
    }

    /**
     * 逻辑删除用户
     * @param id 用户id
     * @return
     */
    boolean logicalDeleteById(String id){
    
    
        return sysUserDao.logicalDeleteById(id);
    }

}

以上就是今天分享的内容,Java编程设计就好比书法,只要按规范坚持下去,你也能成就大师的风范。我是码农洞见,为初学者提供学习指南,为从业者提供参考价值。我坚信码农也具有产生洞见的能力。欢迎大家关注交流!

猜你喜欢

转载自blog.csdn.net/pangpengshuai/article/details/120055228