1. 程式人生 > 程式設計 >關於JavaScript輪播圖的實現

關於JavaScript輪播圖的實現

軟體開發目錄規範

軟體開發的目錄規範:

  為了提高程式的可讀性與可維護性,我們應該為軟體設計良好的目錄結構,這與規範的編碼風格同等重要。軟體的目錄規範並無硬性標準,只要清晰可讀即可,假設你的軟體名為foo,筆者推薦目錄結構如下

Foo/
|-- core/
|   |-- core.py
|
|-- api/
|   |-- api.py
|
|-- db/
|   |-- db_handle.py
|
|-- lib/
|   |-- common.py
|
|-- conf/
|   |-- settings.py
|
|-- run.py
|-- setup.py
|-- requirements.txt
|-- README

解釋一下:

​ • core/: 存放業務邏輯相關程式碼

​ • api/: 存放介面檔案,介面主要用於為業務邏輯提供資料操作。

​ • db/: 存放操作資料庫相關檔案,主要用於與資料庫互動

​ • lib/: 存放程式中常用的自定義模組

​ • conf/: 存放配置檔案

​ • run.py: 程式的啟動檔案,一般放在專案的根目錄下,因為在執行時會預設將執行檔案所在的資料夾作為sys.path的第一個路徑,這樣就省去了處理環境變數的步驟

​ • setup.py: 安裝、部署、打包的指令碼。

​ • requirements.txt: 存放軟體依賴的外部Python包列表。

​ • README: 專案說明檔案。

除此之外,有一些方案給出了更加多的內容,比如LICENSE.txt,ChangeLog.txt檔案等,主要是在專案需要開源時才會用到,請讀者自行查閱。

關於README的內容,這個應該是每個專案都應該有的一個檔案,目的是能簡要描述該專案的資訊,讓讀者快速瞭解這個專案。它需要說明以下幾個事項:

1、軟體定位,軟體的基本功能;

2、執行程式碼的方法: 安裝環境、啟動命令等;

3、簡要的使用說明;

4、程式碼目錄結構說明,更詳細點可以說明軟體的基本原理;

5、常見問題說明。

舉例說明:資料準備如下

# src.py存放原始碼

# encoding=utf-8
# auther:lsj

def exit():
    print("退出功能")

def login():
    print("登入功能")

def register():
    print('註冊功能')

def witdraw():
    print('體現功能')

def transfer():
    print("轉賬功能")

func_dic={
    '0':['退出',exit],
    '1':['登入',login],
    '2':['註冊',register],
    '3':['體現',witdraw],
    '4':['轉賬',transfer],
}
def run():
    while True:
        for k in func_dic:
            print(k,func_dic[k][0])

        choice = input("請輸入指令編號:").strip()
        if choice in func_dic:
            func_dic[choice][1]()
        else:
            print("請重新輸入")

# run()
# start.py存放執行程式

# encoding=utf-8
# auther:lsj

# 使用相對匯入:參照當前所在資料夾
# from ..core.src import run
# run()
# ImportError: attempted relative import with no known parent package
# 執行檔案超出了查詢範圍。

# 應該採用絕對匯入-->sys.path-->執行檔案
# import sys
# sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM\core')
# import src
# src.run()


# 考慮問題:我們目前把路徑寫死了
# import sys
# sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM\core')
# sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM\lib')
# sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM\db')
# sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM\conf')
#
# import src
# src.run()

# 檢視路徑都是重複的,我們進行優化:把環境的頂級目錄加入到環境變數
# import sys
# sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM')

# from conf import settings
# from core import src
# from db import db_handle
# from lib import common

# print(settings)
# print(src)
# <module 'conf.settings' from 'D:\\pycharm\\oldboy_29\\day021\\ATM\\conf\\settings.py'>
# <module 'core.src' from 'D:\\pycharm\\oldboy_29\\day021\\ATM\\core\\src.py'>


# from core import src
# src.run()

# 不加任何字首直接執行run(),優化如下
# from core.src import run
# run()


# 優化一
# import sys
# print(__file__)  # 獲取當前檔案的絕對路徑:執行結果D:/pycharm/oldboy_29/day021/ATM/bin/start.py
# # sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM')

import os
# print(__file__)  # 獲取當前檔案的絕對路徑,D:/pycharm/oldboy_29/day021/ATM/bin/start.py
# print(os.path.dirname(__file__))  # 獲取當前檔案的絕對路徑的上一個檔案,D:/pycharm/oldboy_29/day021/ATM/bin
# print(os.path.dirname(os.path.dirname(__file__)))  # D:/pycharm/oldboy_29/day021/ATM
# # sys.path.append(r'D:\pycharm\oldboy_29\day021\ATM')

# 優化二
import os,sys
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
sys.path.append(BASE_DIR)

from core import src

src.run()

"""執行結果如下
0 退出
1 登入
2 註冊
3 體現
4 轉賬
請輸入指令編號:
"""
# commonpy檔案的程式碼
import time
from conf import settings
def logger(msg):
    # 日誌記錄功能
    with open(settings.LOG_PATH,
              mode='at',
              encoding='utf-8'
              ) as f:
        f.write('%s %s\n'%(time.strftime('%Y-%m-%d %H:%M:%S'),msg))

# 日誌路徑不能寫死,你要給使用者選擇自定義的儲存位置,去settings裡面設定
# settings.py檔案

from core import src

# 這裡的路徑寫死了,我們優化一下
# LOG_PATH = r'D:\pycharm\oldboy_29\day021\ATM\log\user.log'

import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
LOG_PATH = r'%s/log/user.log' %BASE_DIR