軟件開發規範

本文主要介紹軟件開發規範,而且經過一個實際的blog的拆分實例來進行講解。python

'''
總體說明:
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\n')


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期週末班\day07\blog')
# 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:\pythonweekend24\day07\blog\db\register'
LOG_PATH = r'D:\pythonweekend24\day07\blog\log\access.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\n')


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'''
相關文章
相關標籤/搜索