教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 像Go一样写Java,从Go的特性,讨论一种编程风格。

像Go一样写Java,从Go的特性,讨论一种编程风格。

发布时间:2021-04-11   编辑:jiaochengji.com
教程集为您提供像Go一样写Java,从Go的特性,讨论一种编程风格。等资源,欢迎您收藏本站,我们将为您提供最新的像Go一样写Java,从Go的特性,讨论一种编程风格。资源

上篇转帖的blog里面提到了Go的特性,作为编写Java时也可以给自己点编程风格的参考。

下面是提到的改进

  • 下面简单学习和分析一下重点的风格提示,领会Ken和Pike的编程思想:

  • 规范的语法(不需要符号表来解析)
    垃圾回收(独有)
    无头文件
    明确的依赖
    无循环依赖
    常量只能是数字
    int和int32是两种类型
    字母大小写设置可见性(letter case sets visibility)
    任何类型(type)都有方法(不是类型)
    没有子类型继承(不是子类)
    包级别初始化以及明确的初始化顺序
    文件被编译到一个包里
    包package-level globals presented in any order
    没有数值类型转换(常量起辅助作用)
    接口隐式实现(没有“implement”声明)
    嵌入(不会提升到超类)
    方法按照函数声明(没有特别的位置要求)
    方法即函数
    接口只有方法(没有数据)
    方法通过名字匹配(而非类型)
    没有构造函数和析构函数
    postincrement(如  i)是状态,不是表达式
    没有preincrement(i  )和predecrement
    赋值不是表达式
    明确赋值和函数调用中的计算顺序(没有“sequence point”)
    没有指针运算
    内存一直以零值初始化
    局部变量取值合法
    方法中没有“this”
    分段的堆栈
    没有静态和其它类型的注释
    没有模板
    没有异常
    内建string、slice和map
    数组边界检查


  • 常量只能是数字

    可以学习。在jdbc编程的时候,我们把SQL语句提成配置文件。

  • 没有子类型继承(不是子类)

    少用继承


  • 包级别初始化以及明确的初始化顺序

    注意静态变量和构造函数里面的初始化顺序,Java里面的顺序是和静态变量的在类里面声明的出现顺序有关系的。

  • 文件被编译到一个包里

    少用别人的Jar包,减少DLL噩梦和Jar噩梦。


  • 接口隐式实现(没有“implement”声明)

    适当使用Object类型,JFinal就这么做的。效率很高。

  • 嵌入(不会提升到超类)

    多聚合,多组合,少继承

  • 方法按照函数声明(没有特别的位置要求)

    能静态的方法就都静态化,提高效率。还有可以将静态方法放到一个工具类里面,不初始化此类,直接调用。FastJson就是这样做的。极大提高效率。

  • 方法即函数

    同上

  • 接口只有方法(没有数据)

    interface里面不声明数据。Java社区之前争论过很多的问题,go给出一个参考答案。

  • 方法通过名字匹配(而非类型)

    这个适量使用Object前提。

  • 没有构造函数和析构函数

    不要依赖构造函数,可以考虑编写init方法和destory方法,手动获取,释放链接和空间,提高效率。

  • postincrement(如 i)是状态,不是表达式

    慎用

  • 没有preincrement(i )和predecrement

    不用

  • 赋值不是表达式

    防止最2的==和=混淆

  • 明确赋值和函数调用中的计算顺序(没有“sequence point”)

    多用括号。提高计算顺序可读性

  • 内存一直以零值初始化

    注意初始化的值。看情况是否要赋值初值。

  • 方法中没有“this”

    哈,好东西。非常重要的提醒!!之前我在编程的时候隐隐约约觉得this不是很妥当。带来大量的歧义和隐患。


  • 没有模板

    Java的模板太恶心。虽然效率低下,但是还是要使用反射构造器。。。

  • 没有异常

    少用异常做处理,能预测的故障尽量写程序控制。

  • 内建string、slice和map

    找一个趁手的string,map工具。没有的话,要自己写一个,我选择guava。

  • 数组边界检查

    注意越界,错误。所有的直接对数组的读取之前都要判断数组里面的数值个数,千万别越界。




到此这篇关于“像Go一样写Java,从Go的特性,讨论一种编程风格。”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
Go 语言十年而立,Go2 蓄势待发
像Go一样写Java,从Go的特性,讨论一种编程风格。
golang是面向对象吗_Go是面向对象的吗?
想学一门新的编程语言?考虑一下Go (Golang)吧
go 函数末尾缺少返回值_王垠:Go语言野心勃勃,实际情况又如何
Go语言的主要特性和发展影响
图解 Go 并发编程
【Go语言入门系列】(八)Go语言是不是面向对象语言?
Go 语言到底适合干什么?
Golang简介

[关闭]
~ ~