你还用拼音为变量命名?新人OIer别傻了,教你写出优质代码
本篇文章适用语言:python,c++,Java.(其实我就是随便bb)
我们在编辑代码的时候,不免拿其他人的代码进行学习,或者将自己的代码拿给别人修改.这个时候,如何让别人快速读懂你的代码,是提升效率的关键,而且一个好的码风可以让自己读起来也赏心悦目.那么接下来我就会对这一部分进行讲解.
变量命名
我将码风分为两个部分,变量命名和代码书写.
变量命名当中,最最最最恶心的一点就是拿拼音来为变量命名,你拿x,y,z都好过.什么书本的数量用"shuben",你是小学没学过吗?我幼儿园都会"book".不仅打起来麻烦而且让人感觉你很low.要是让我看见还让我给他改代码我就一拳上去.
比如答案就用"ans"(answer),表示访问的不要用bj(标记),"flag","vis","visit"用着不香吗?拼音很容易让人不知道什么意思,常常过两天来看你自己都不知道.而用英文简写就很容易让人知道什么意思.这也就是代码编辑中的约定俗成.
再者,比如循环变量i,j,k,实在不行加一个l,乱七八糟的不要用.abcxyz等最好不要在太多地方使用,n,m都可以.
代码书写
使我们的代码变得清晰美观的只有一个键--空格.空格的使用使代码变得不那么拥挤.
比如在使用逗号的时候,可以将逗号后面留一个空格.其次,在"="前后也可以有空格,";"后面也允许用空格,"==","&&","||",">=","<="前后我都会加空格
比如在for语句里,我经常这么写:for(int i = 1; i <= n; i++).
但这不是强行要求,你可以在上面进行更改,只要你看着比较美观就好.
示范
随便copy一个同学的代码(来源:洛谷)
#include<bits/stdc++.h>
using namespace std;
int x,sum;
int cf(int a,int b){
int z=1;
for(int i=0;i<b;i++){
z*=a;
}
return z;
}
void digui(int n){
int y;
if(n==0) return;
for(int i=0;i<=15;i++){
y=i;//进行储存
if(cf(2,i)>n){
y--;
break;
}
}
if(y==0) cout<<"2(0)";
if(y==1) cout<<"2";
if(y>1){
cout<<"2(";
digui(y);
cout<<")";
}
if(n!=cf(2,y)){
cout<<"+";
digui(n-cf(2,y));
}
}
int main(){
cin>>x;
digui(x);
return 0;
}
其实这样我是不推荐的,下面是我更改码风过后的代码:
#include<bits/stdc++.h>
using namespace std;
int x, sum;
int cf(int a, int b)
{
int z = 1;
for(int i = 0; i < b; i++)
z *= a;
return z;
}
void dg(int n)
{
int y;
if(n == 0)
return;
for(int i = 0; i <= 15; i++)
{
y = i;
if(cf(2, i) > n)
{
y--;
break;
}
}
if(y == 0)
cout<<"2(0)";
if(y == 1)
cout<<"2";
if(y > 1)
{
cout<<"2(";
dg(y);
cout<<")";
}
if(n != cf(2,y))
{
cout<<"+";
dg(n - cf(2, y));
}
}
int main(){
cin>>x;
dg(x);
return 0;
}
现在我很无语,因为这家伙真tm用digui(递归)做函数名.
我当场吐血.
你用dg都好过digui.好吗?
写在最后
总之,这是我本人提的一些小建议,如果你喜欢我的码风的话,请支持一下本蒟蒻吧.(言外之意我想你不会不懂)
你还用拼音为变量命名?新人OIer别傻了,教你写出优质代码的更多相关文章
- Python_变量命名
Python的变量命名 变量的命名的原则一直都是我这种小白的头疼事,好几条,根本记不住...... 为了解决大家的头疼问题,今天想出来一个好办法,那就是:身边常备头疼片.......(哈哈哈,开玩笑的 ...
- Python变量命名规范
模块名: 小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样 类名: 单词首字母大写 AdStats ConfigUtil 全局变量名(类变量,在java中相当于static变量 ...
- google 变量命名规则简要记录
1.文件命名规则 好的文件名命名可以很清晰的看出这个文件将要承载的内容,Google给出的规则为:文件名要全部小写, 可以包含下划线 (_) 或连字符 (-). 按项目约定来, 例如:cmd_save ...
- JS-JS变量命名规则
原则 变量名区分大小写,允许包含字母.数字.美元符号($)和下划线,但第一个字符不允许是数字,不允许包含空格和其他标点符号. 禁止使用JavaScript关键词.保留字全名. 变量命名长度应该尽可能的 ...
- 变量命名神器Codelf
个人感觉,当觉得命名困难的时候,其实是因为还没有想清楚这个变量.这个方法或者这个类是要干什么,还不能用一个或几个词准确描述它的工作,才觉得无法命名,这是命名的最困难的阶段.而只要想清楚了它的任务,命名 ...
- 「C语言」常量和变量的表示、应用和变量命名规则
在程序运行中,其值不能改变的量成为常量. 在基本数据类型中,常量可分为整型常量.实型常量.符号常量和字符型常量(包括字符常量和字符串常量),现分别介绍如下: 目录: 一.常量 二.C语言标识符 三.变 ...
- python的变量命名规范
一.python变量名命名规则: 1.变量名通常由字母,数字,下划线组成; 2.数字不能作为变量名开头; 3.不能以python中的关键字命名; 4.变量名要有意义; 5.不要用汉字和拼音去命名; 6 ...
- 变量命名网站 Codelf
程序员最头疼的事情除了头发以外就是给变量或函数命名,一开始学编程语言的时候还可以 abc.a1.x2 等方式命名,等到工作过程中开始真正的项目开发时,如果还是这样随意的命名,即使同事可以忍受你的 ab ...
- JavaScript 中的变量命名方法
三种命名方法 在程序语言中,通常使用的变量命名方法有三种:骆驼命名法(CamelCase),帕斯卡命名法(PascalCase)和匈牙利命名法. 依靠单词的大小写拼写复合词的做法,叫做"骆驼 ...
随机推荐
- TensorFlow——批量归一化操作
批量归一化 在对神经网络的优化方法中,有一种使用十分广泛的方法——批量归一化,使得神经网络的识别准确度得到了极大的提升. 在网络的前向计算过程中,当输出的数据不再同一分布时,可能会使得loss的值非常 ...
- Scala与Mongodb实践3-----运算环境的搭建
目的:使的在IDEA中编辑代码,令代码实现mongodb运算,且转换较为便捷 由实验2可知,运算环境的搭建亦需要对数据进行存储和计算,故需要实现类型转换,所以在实验2的基础上搭建环境. 由菜鸟教程可得 ...
- Scala实践13
1.隐式参数 方法可以具有隐式参数列表,由参数列表开头的implicit关键字标记.如果该参数列表中的参数没有像往常一样传递,Scala将查看它是否可以获得正确类型的隐式值,如果可以,则自动传递. S ...
- springboot2 + grpc + k8s + istio
项目情况说明: ubuntu - 16.04 springboot - 2.2.2.RELEASE mysql - 5.7 mongodb - 4.0.14 redis - 3.0.6 grpc - ...
- python递归(函数)
递归:一个过程或函数调用自身的一种方法. 1. 效果图 2. 代码 def factorial(n): ''' 该函数用来求任意数的阶乘 参数: n 要求阶乘的数字 ''' # 基线条件 判断n是否为 ...
- 重拾c++第一天(1):环境配置
时过多年,c++基本不记得了,故在此记录相关重拾记录. 学习语言第一步当然是环境配置了(笑),由于暂无用c++进行大型项目开发的需求,所以先下载dev进行过渡. 安装过程非常简单,值得注意的是配置时选 ...
- 用ModelAndView返回视图结果返回的是对应RequestMapping拼接的路径
今天,遇到一个贼坑的问题,就是我明明可以将逻辑视图名视图存入ModelAndView,结果返回的页面信息是RequestMapping拼接的视图解析路径,最后经过检查多遍代码,发现原来是ModelAn ...
- Bootstrap Table的使用详解
Bootstrap Table是基于 Bootstrap 的 jQuery 表格插件,通过简单的设置,就可以拥有强大的单选.多选.排序.分页,以及编辑.导出.过滤(扩展)等等的功能.接下来我们来介绍B ...
- 【java面试】Web篇
1.AJAX创建步骤 step1. 创建XMLHttpRequest对象,也就是创建一个异步调用对象: step2. 创建一个新的HTTP请求,并指定改HTTP请求的方法.URL以及验证信息: s ...
- 简单理解设计模式——享元模式-线程池-任务(tesk)
前面在写到多线程的文章的时候,一直想写一篇关于线程池等一系列的文章,做一下记录,本篇博客记录一下设计模式中享元模式的设计思想,以及使用享元模式的实现案例——线程池,以及线程池的简化版——任务(tesk ...