软件开发规范

本文主要介绍软件开发规范,并且通过一个实际的blog的拆分实例来进行讲解。

'''
整体说明:
01 项目的目录结果如下:
    (1)bin:用于存放启动文件,startup.py
    (2)conf:用于存放配置文件,settings.py
    (3)core:用于存放核心逻辑代码,src.py
    (4)db:用于存放数据文件 ,register.py
    (5)lib:用于存放公共组件,common.py
    (6)log:用于存放日志文件,access.log
    (7)README:用于说明以下几个事项。
        (a)软件定位,软件的基本功能。
        (b)运行代码的方法:安装环境,启动命令等。
        (c)简要的使用说明。
        (d)代码目录结构说明,更详细点可以说明软件的基本原理。
        (e)常见的问题说明。
        (f)参考示例:https://github.com/antirez/redis#what-is-redis
02 __file__:查看文件的当前目录
03 dirname(__file__):可获取项目的根目录
'''

''''
需求:将以下程序按照软件开发规范来进行整理
'''


def logger(f):
    def inner(*args, **kwargs):
        with open(LOG_PATH, encoding='utf-8', mode='a+') as f1:
            f1.write('您访问了%s' % (f.__name__))
        ret = f(*args, **kwargs)
        return ret
    
    return inner


def register():
    with open(DB_PATH, encoding='utf-8', mode='a+') as f1:
        f1.write('太白金星|123
')


def login():
    pass


@logger
def comment():
    print('欢迎访问评论页面')


@logger
def article():
    print('欢迎访问文章页面')


@logger
def diary():
    print('欢迎访问日记页面')


dic = {
    1: register,
    2: login,
    3: comment,
    4: article,
    5: diary
}


def run():
    while 1:
        choice = input('请输入')
        if choice.isdigit():
            choice = int(choice)
            dic[choice]()
        else:
            print('请重新输入')


run()

'''整理过程如下:'''
'''bin -> startup.py'''
# import src  直接引用不行,src这个模块没在这三个当中
# 先从内存 ---> 内置模块(os,time sys..) ---> sys.path
import sys
import os
# sys.path.append(r'D:24期周末班day07log')
# print(__file__)  # 文件的当前目录
# print(os.path.dirname(os.path.dirname(__file__)))  # 获取到了项目根目录

# 通过将项目根目录添加至sys。path后,项目内的所有模块就可以实现相互调用了
BASE_PATH = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_PATH)
from core import src


# 用户代码调数,如果__name__等于__main__可以执行,如果__name__等于模块名,说明模块被调用,所以不能启动程序。
if __name__ == '__main__':
    src.run()
    
'''conf -> settings.py'''
DB_PATH = r'D:pythonweekend24day07logdb
egister'
LOG_PATH = r'D:pythonweekend24day07loglogaccess.log'

'''core -> src.py'''
# -*- encoding:utf-8 -*-
#
from lib import common
from conf import settings

def register():
    with open(settings.DB_PATH, encoding='utf-8', mode='a+') as f1:
        f1.write('太白金星|123
')


def login():
    pass


@common.logger
def comment():
    print('欢迎访问评论页面')


@common.logger
def article():
    print('欢迎访问文章页面')


@common.logger
def diary():
    print('欢迎访问日记页面')


dic = {
    1: register,
    2: login,
    3: comment,
    4: article,
    5: diary
}


def run():
    while 1:
        choice = input('请输入')
        if choice.isdigit():
            choice = int(choice)
            dic[choice]()
        else:
            print('请重新输入')

'''lib -> common.py'''
from conf import settings
def logger(f):
    def inner(*args, **kwargs):
        with open(settings.LOG_PATH, encoding='utf-8', mode='a+') as f1:
            f1.write('您访问了%s' %(f.__name__))
        ret = f(*args, **kwargs)
        return ret
    return inner

'''db -> register'''

'''log ->access.log'''
原文地址:https://www.cnblogs.com/mayugang/p/10024387.html