เมื่อตอนที่ฉันอยู่ที่มหาวิทยาลัยเราได้รับการสอนเรื่อง "The Global Variable Problem" - ชุดของข้อบกพร่องและปัญหาการบำรุงรักษาโค้ดที่เกิดจากตัวแปรทั่วโลกมากมาย
ตัวแปรบางตัวมีอันตรายมากกว่าตัวแปรอื่น ๆ
ปลอดภัย : ตัวแปรที่ไม่ส่งผลกระทบต่อ flow-of-control เช่น LastName
อันตราย : ตัวแปรใด ๆ ที่มีผลต่อการควบคุมการไหลของโปรแกรมเช่น DeliveryStatus
อันตรายที่สุดก่อน:
- สถานะการรวม (โหมดและโหมดย่อย)
- มูลค่ารวม (รวม, ผลรวมย่อย)
- สถานะเดียว (โหมด)
- ค่าเดียว (นับ)
เพื่อหลีกเลี่ยง "ปัญหาตัวแปรส่วนกลาง" คุณต้อง
- จัดทำเอกสารแต่ละตัวแปรและฟังก์ชั่น
- เก็บตัวแปรที่เกี่ยวข้องไว้ใกล้กัน (ด้วยรหัสที่ใช้พวกเขา) ในส่วนเดียวกันของซอร์สโค้ด
- ซ่อนตัวแปร "อันตราย" เพื่อให้โปรแกรมเมอร์คนอื่นไม่ทราบว่ามีอยู่จริง หลีกเลี่ยงการใช้งานโดยตรงโดยเฉพาะในส่วนอื่น ๆ ของรหัส
- จัดเตรียมฟังก์ชั่นที่อ่าน / เขียนตัวแปรอันตราย (ดังนั้นโปรแกรมเมอร์อื่นไม่จำเป็นต้องใช้)
ในการจัดโครงสร้างโค้ดของคุณเมื่อไม่มีโครงสร้างในภาษาให้ใช้ความคิดเห็นและแบบแผนการตั้งชื่อ:
/* --------------------------- Program mode ------------------------ */
var Mode_Standard = 1; // Normal operation (SubMode unused)
var Mode_Backup = 2; // Backup mode (SubMode is backup device)
var BackupMode_Disk = 1; // SubMode: Backup to disk
var BackupMode_Tape = 2; // SubMode: Backup to tape
var MainMode = Mode_Standard;
var SubMode = 0;
function Mode_SetBackup(backupMode)
{
MainMode = Mode_Backup;
SubMode = backupMode;
}
function Mode_SetStandardMode()
{
MainMode = Mode_Standard;
SubMode = 0;
}
function Mode_GetBackupMode()
{
if (MainMode != Mode_Backup)
return 0;
return SubMode;
}
/* --------------------------- Stock Control ------------------------ */
var Stock_Total = 123; // Total stock (including RingFenced)
var Stock_RingFenced = 22; // Ring-fenced stock (always less than total)
// Adds further ring-fenced stock
function Stock_AddRingFenced(quantity)
{
Stock_Total += quantity;
Stock_RingFenced += quantity;
}
/* ------------------------- Customers ----------------------- */
var Customer_FirstName = "Tony";
var Customer_LastName = "Stark";