分析一套源代码的代码规范和风格并讨论如何改进优化代码

鉴于我的工程实践题目比较特殊,基本没有现成的源码可以分析,因此我选择一套之前自己开发的网页进行分析。该网页是一套使用python中的Django框架开发的轻量级电商平台,包括前端的HTML网页、后端的网页交互逻辑以及数据库开发,下图所展示的是该项目的一部分总体结构。

1、根据其编程语言或项目特点,分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点:

可以看到,该项目的各个目录层级结构都有自己的功能,如media文件夹下存放的主要是网页所需的静态图片,templates文件夹下存放的是前端的各种HTML页面,views.py中是网页交互逻辑等。

接下来打开views.py文件来查看一下函数、变量等的命名规则。如下是views.py中的两个函数——网页注册函数与登录函数,接下来就这两个函数分析一下代码风格。# 注册

def regist(request):
if request.method == 'POST':
userform = UserForm(request.POST)
if userform.is_valid():
username = userform.cleaned_data['username']
password = userform.cleaned_data['password']
email = userform.cleaned_data['email']
user1 = User.objects.filter(username__exact=request.POST['username'])
user2 = User.objects.filter(email__exact=request.POST['email'])
if user1 or user2:
status = '用户名/邮箱已存在'
return render_to_response('regist.html', {'userform': userform, 'status': status})
else:
new_user = User(username=username, password=password, email=email, money=0)
new_user.save()
coin = Coin(owner=new_user, amount=0)
coin.save()
cart = Cart(owner=new_user)
cart.save()
return HttpResponseRedirect('/login')
else:
userform = UserForm()
return render_to_response('regist.html', {'userform': userform})


# 登录
def login(request):
if request.method == 'POST':
userform = UserForm(request.POST)
if userform.is_valid():
username = userform.cleaned_data['username']
password = userform.cleaned_data['password']
email = userform.cleaned_data['email']
user = User.objects.filter(username__exact=username, password__exact=password,
email__exact=email)
if user:
request.session['username'] = username
nextfullurl = request.get_full_path()
if nextfullurl.find('?next=') != -1:
R_url = nextfullurl.split('?next=')[1]
else:
R_url = '/index/'
return HttpResponseRedirect(R_url, {'userform': userform})
else:
status = "用户名/邮箱/密码错误"
return render_to_response('login.html', {'userform': userform, 'status': status})
else:
userform = UserForm()
return render_to_response('login.html', {'userform': userform})
这两段代码实现了用户的注册/登录功能,从整体结构上来看这两段代码非常相似,都采用了多个判断结构,不同之处仅在于内部的功能实现。但是这两个函数编程风格上的不足之处在于没有为各个变量和函数逻辑写清楚注释,导致阅读较为困难。这也是因为当初我在编写这套代码时没有考虑其他人阅读代码的可
读性,是我自身的疏忽。
2、列举哪些做法符合代码规范和风格一般要求:
关于函数的命名规则,这里统一使用了比较便于理解的英文意思命名,并且在函数上方给与简短的注释来说明该函数的功能,比较便于理解。
不用的函数之间使用空格分隔,使代码可读性更好。
过长的语句使用换行排列,更加便于阅读。
3.列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进
缺少对变量以及关键函数逻辑的注释,使得代码较难阅读,应该对变量及关键函数添加注释。
变量定义的较为散漫,很多变量仅仅使用数字作为区别,让人难以将变量与其作用对应起来,变量定义采用意义命名法,让人看到变量即可联想到其意义。
4.总结同类编程语言或项目在代码规范和风格的一般要求
python语言的代码规范如下:
如无特殊情况, 文件一律使用 UTF-8 编码;
如无特殊情况, 文件头部必须加入#--coding:utf-8--标识;
统一使用 4 个空格进行缩进;
每行代码尽量不超过 80 个字符;
模块级函数和类定义之间空两行;
类成员函数之间空一行;
标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字;
标识符不能和 Python 中的保留字相同;
Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。

 



posted @ 2019-10-10 20:21  darz233  阅读(253)  评论(0编辑  收藏  举报