2016-12-19 17 views
0

私はUUIDを生成するために以下のタイスクリプト方法を使用しています。コードそのものは基本的にはstackoverflow answerのタイスクリプト版です。uuid作成のビット演算子の代わり

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ジェネレータの暗号の面を損なうことなくこのコードを書き換える方法は知らない。このコードをどのように書き直すことができますか、これはまったく意味がありませんか?

+3

なぜビット演算子を禁止するルールがありますか?それは変だ。 – Pointy

+0

私はそれも変だと思いますが、これは私の決定ではありませんでした。 –

+1

TSLintルールはバグです。コードではありません – slebetman

答えて

3

これが強調表示される理由は、意図的に使用するよりもif文でビット単位の演算子を誤って使用する可能性が高いからです。

は実際にははビット単位の演算子を使用することをTSLintに伝えることができます。特別なTSLintコメントでそれらを囲みます。 :

/* tslint:disable:no-bitwise */ 

// Your code... 

/* tslint:enable:no-bitwise */ 
関連する問題