対象の記事
(魚拓:https://megalodon.jp/2023-0117-1550-00/https://qiita.com:443/joer/items/e579d3e4b35e88868996)
改訂履歴
- 2023/01/25: コミュニティガイドラインに沿わせる改訂
経緯
Twitterで流れてきたので見た。
感想
-
「1. Testing Trophyを意識して、フロントエンドのテストを書きましょう」1について、挿入されている画像が著作権法上要請される引用の要件を満たせていない恐れがある。出典を示すべき。
-
「16. ChatGPTを多用しましょう」1について、生成されたコードの基となるオリジナルのコードは、LGPLやGPLなどコピーレフトなライセンスが適用されたコードが出力される危険性が否めないので不適切。
- GitHub CopilotのBusinessプランのほうが安全性が高い。既存コードと150文字以上一致するコードが出力に含まれないことが保証される。
-
「18. nullかundefinedか」1についてTypeScriptの公式wikiを参照しているが、当該ページの冒頭には
These are Coding Guidelines for Contributors to TypeScript. This is NOT a prescriptive guideline for the TypeScript community. These guidelines are meant for contributors to the TypeScript project's codebase.
-- 2と書かれている。これはあくまでもtsc3など、TypeScript自身のコーディングルールを記述したページであり、TypeScriptの公式な言語スタイルがTypeScriptを採用するすべてのプロジェクトにおいて
null
よりundefined
を使うことを推奨していると解釈するのは誤り。 -
レガシーコードをリファクタリングしていた私の意見からすると早期
return
だけが「リーダブルコード」の要素ではない (参考: 『リーダブルコード』―より良いコードを書くためのシンプルで実践的なテクニック)。リーダブルコード=早期returnと読めるような断定的な文は誤り。 -
「28. JWTのトークンのハンドリングに関して」1について:
- 「最初の認証時にGETしたJWTのトークンをlocalstorageに保存し」1:
window.localStorage
に保存するべきではない。httpOnly
属性とsecure
属性 (と、domain
及びpath
属性) が付いたCookieに保存するべきである。- 一部の記事はXSSが起きれば全て無力なのでどの方法でもいいと主張している。しかし、それはそもそも「XSSを起こすようなコードを書かない」という大原則を守っていれば起きないのでここではないものとして考える。
- 「そのトークンのプロパティに期限を扱うexpirationのようなものがある」1:
- 確かに、
exp
クレームはRFC 7519 § 4.1.4で規定されているが、規格上は必須ではない:Applications using JWTs should define which
specific claims they use and when they are required or optional. - あくまでも相互運用性のために定められているものである [RFC 7519 § 4.1]:
None of the claims
defined below are intended to be mandatory to use or implement in all
cases, but rather they provide a starting point for a set of useful,
interoperable claims.
- 確かに、
- 「最初の認証時にGETしたJWTのトークンをlocalstorageに保存し」1: