javascript - ทางเลือกแทนตัวดำเนินการบิตในสร้าง uuid
ฉันกำลังใช้เมธอด TypeScript ต่อไปนี้เพื่อสร้าง UUID โค้ดตัวมันเองก็เป็นเวอร์ชัน TypeScript ของคำตอบใน Stack Overflow นี้
generateUUID(): string {
let date = new Date().getTime();
if (window.performance && typeof window.performance.now === 'function') {
date += performance.now();
}
let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
let r = (date + Math.random() * 16) % 16 | 0;
date = Math.floor(date / 16);
return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);
});
return uuid;
};
ทีมพัฒนาของเราใช้ TSLint เพื่อให้โค้ดสะอาดและเรามีกฎที่ห้ามใช้ bitwise operators ฉันไม่มีไอเดียว่าจะเขียนโค้ดนี้ใหม่อย่างไรโดยไม่ทำลายด้านการเข้ารหัสของตัวสร้าง UUID โค้ดชิ้นนี้สามารถเขียนใหม่ได้อย่างไร หรือมันไม่มีความหมายเลย?
คำตอบ #1
เหตุผลที่ TSLint เน้นจุดนี้คือมีแนวโน้มว่าผู้ใช้ได้ใช้ตัวดำเนินการแบบบิตโดยไม่ตั้งใจ (เช่น ในคำสั่ง if) มากกว่าจะใช้มันโดยตั้งใจ
มันควรจะยอมรับได้มากที่จะบอก TSLint ว่าคุณ ตั้งใจจริงๆ ที่จะใช้ตัวดำเนินการแบบบิต แค่ห่อพวกมันในคอมเมนต์พิเศษของ TSLint :
/* tslint:disable:no-bitwise */
// Your code...
/* tslint:enable:no-bitwise */
