GithubHelp home page GithubHelp logo

codestyle's Introduction

Gugle的代码风格指南

  • 版本: 0.0.2
  • 创建日期: 2023/10/07
  • 最后修改: 2023/10/08

通用

  • 缩进:

    • 缩进应使用 空格 而非 制表符
    • 除非一些特殊需求,否则一般使用 4空格 作为缩进
  • 标识符:

    • 除循环变量,或者表示坐标的 xyz 等特殊情况,标识符禁止使用单个字母
  • 操作符

    • 三元操作符、二元操作符通常情况下前后需要有空格,如:
      • result = num1 + num2
      • if(num1 > num2) return;
      • result = num1 > num2 ? num1 : num2
    • 一元操作符通常情况下前后不需要有空格,如:
      • result = num1++
  • 括号:

    • 对于使用括号分割代码块的语言,我们通常有以下要求:
    • 圆括号 () 与其它代码块之间通常情况下不存在空格
    • 花括号 {} 与其它代码块之间通常情况下存在 1 个空格
    • 方括号 [] 与其它代码块之间通常情况下不存在空格
    • 如:
      function outNums(nums:number[]):void {
          for(num in nums) {
              if(num > 10) {
                  console.log(num);
              } else {
                  console.log(num * 2);
              }
          }
      }
  • 代码行

    • 在代码行的结尾不应该有任何 空格 或者 制表符 , 即使是空行
    • 一行代码最好不要超过 120 个半角字符的长度
  • 嵌套

    • 一般情况下,我们不建议嵌套(如循环,判断等)超过 4 层,如:
      function exampleFunc(user:User, data:PlayerData):void {
          if(user.isAdmin()) {
              if(user.isAlive()) {
                  let info:string = "";
                  for(item in data.items) {
                      if(!item.isEmpty()) {
                         info = info + item.name + "\n";
                      }
                  }
                  user.send(info);
              }
          }
      }
    • 我们可以通过提前返回,函数提取等手段减少代码的嵌套层级,如上面的代码可以修改为:
      function exampleFunc(user:User, data:PlayerData):void {
          if(!user.isAdmin()) return;
          if(!user.isAlive()) return;
          user.send(outItemsName(data.items));
      }
      
      function outItemsName(items:Item[]):string {
          let info:string = "";
          for(item in data.items) {
              if(item.isEmpty()) continue;
              info = info + item.name + "\n";
          }
          return info;
      }

Java

  • 命名
    • 文件名通常情况下应使用大驼峰命名法,即所有单词首字母大写,如:
      • User
      • PlayerData
    • 类名通常情况下应使用大驼峰命名法
    • 字段通常情况下应使用小驼峰命名法,即第一个单词首字母小写,后续单词首字母大写,如:
      • address
      • phoneNumber
      • 特殊的,被 static final 修饰的字段应使用全大写,以下划线分割的方式命名,如 GAME_MODE_CREATIVE ,枚举类的对象应视为被 static final 修饰
    • 方法通常情况下应使用使用小驼峰命名法

C/C++

  • 命名
    • 文件名通常情况下应使用大驼峰命名法
    • 类名、结构体名、 typedef 重新定义的类型通常情况下应使用大驼峰命名法
    • 变量、全局变量通常情况下应使用小驼峰命名法
    • 函数通常情况下应使用使用大驼峰命名法
    • 宏常量应使用全大写,以下划线分割的方式命名

C#

  • 命名
    • 文件名通常情况下应使用大驼峰命名法
    • 类名通常情况下应使用大驼峰命名法
    • 字段通常情况下应使用小驼峰命名法
      • 特殊的,被 static readonly 修饰的字段应使用全大写,以下划线分割的方式命名,枚举类的对象应视为被 static readonly 修饰
    • 方法通常情况下应使用使用大驼峰命名法

Python

  • 命名
    • 文件名通常情况下应使用蛇形命名法
    • 类名通常情况下应使用大驼峰命名法
    • 变量、全局变量通常情况下应使用蛇形命名法,即所有单词全小写,以下划线分割,如:
      • address
      • phone_number
      • 表示常量的不希望被修改的变量应使用全大写,以下划线分割的方式命名
    • 函数、方法通常情况下应使用使用蛇形命名法

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.