軟件開發目錄規范


一、軟件開發的目錄規范

為了提高程序的可讀性與可維護性,我們應該為軟件設計良好的目錄結構,這與規范的編碼風格同等重要,簡而言之就是把軟件代碼分文件目錄。假設你要寫一個ATM軟件,你可以按照下面的目錄結構管理你的軟件代碼:

ATM/
|-- core/
|   |-- src.py  # 業務核心邏輯代碼
|
|-- api/
|   |-- api.py  # 接口文件
|
|-- db/
|   |-- db_handle.py  # 操作數據文件
|   |-- db.txt  # 存儲數據文件
|
|-- lib/
|   |-- common.py  # 共享功能
|
|-- conf/
|   |-- settings.py  # 配置相關
|
|-- bin/
|   |-- run.py  # 程序的啟動文件,一般放在項目的根目錄下,因為在運行時會默認將運行文件所在的文件夾作為sys.path的第一個路徑,這樣就省去了處理環境變量的步驟
|
|-- log/
|   |-- log.log  # 日志文件
|
|-- requirements.txt # 存放軟件依賴的外部Python包列表,詳見https://pip.readthedocs.io/en/1.1/requirements.html
|-- README  # 項目說明文件
# run.py

import sys
import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(BASE_DIR)
from core import src

if __name__ == '__main__':
    src.run()

# settings.py

import os

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

DB_PATH = os.path.join(BASE_DIR, 'db', 'db.txt')
LOG_PATH = os.path.join(BASE_DIR, 'log', 'user.log')

# print(DB_PATH)
# print(LOG_PATH)

# src.py

from conf import settings
from lib import common


def login():
    print('登陸')


def register():
    print('注冊')
    name = input('username>>: ')
    pwd = input('password>>: ')
    with open(settings.DB_PATH, mode='a', encoding='utf-8') as f:
        f.write('%s:%s\n' % (name, pwd))
        # 記錄日志。。。。。。
        common.logger('%s注冊成功' % name)
        print('注冊成功')


def shopping():
    print('購物')


def pay():
    print('支付')


def transfer():
    print('轉賬')


func_dic = {
    '1': login,
    '2': register,
    '3': shopping,
    '4': pay,
    '5': transfer,
}


def run():
    while True:
        print("""
        1 登陸
        2 注冊
        3 購物
        4 支付
        5 轉賬
        6 退出
        """)
        choice = input('>>>: ').strip()
        if choice == '6': break
        if choice not in func_dic:
            print('輸入錯誤命令,傻叉')
            continue
        func_dic[choice]()
# common.py

import time
from conf import settings


def logger(msg):
    current_time = time.strftime('%Y-%m-%d %X')
    with open(settings.LOG_PATH, mode='a', encoding='utf-8') as f:
        f.write('%s %s' % (current_time, msg))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM