su-its / ams-backend

:briefcase: (This repository is no longer maintained) The backend server of our Access-management-system.
MIT License
0 stars 0 forks source link

Default Exportの廃止 #77

Closed h-takeyeah closed 3 years ago

h-takeyeah commented 3 years ago

ここにexport defaultは悪だと書いてあったので 廃止してみました.動作に変更はありません. https://basarat.gitbook.io/typescript/main-1/defaultisbad

単純なリファクタリングにも満たない程度の好みの問題による変更なのでマージの優先度は低いです.

h-takeyeah commented 3 years ago

TSちゃんと書いたことないので、ニワカ発言なんですけど importするとき、 import { mysql } from 'db' みたいな書き方を強制する、という変更なんですよね?

はい,その通りです

ghost commented 3 years ago

@h-takeyeah ま、インテリセンス働きそうなので、いいとは思うのですが、一応、そういうグローバル名前空間(表現あってる?)的な所にモノないからちゃんとimportしろ的なメモはないと引継ぎ困りそうっすね...

h-takeyeah commented 3 years ago

@equal-l2 さんの「各々のモジュールは自分の外にrouterがあるとは思ってないので、そこを大切にしてあげたい」という意見には反してしまいますが,

// XXRoutes.ts側
const accessLogsRouter = Router()
accessLogsRoutes.get('/access_logs', listAccessLogs)
export { accessLogsRouter }

こうすると

// ams-backend.tsg側
import { accessLogsRouter } from './app/routes/accessLogsRoutes'

こうできます.まあ今までのrouterという変数を使っている部分を大事にする(変更箇所を最小限に抑える)には下の例の方がいいかなあと思います.

// XXRoutes.ts側
export { router as accessLogsRouter }
h-takeyeah commented 3 years ago

とは言ったものの「各々のモジュールは自分の外にrouterがあるとは思ってないので、そこを大切にしてあげたい」に則れば呼び出した側で名前の衝突は回避してあげるべきなのかもしれません.つまり呼び出した側(ams-backend.ts)で衝突したらasで言い換えてあげると. ただ,その場合だと呼び出した側の都合でいかようにも呼び名が変わってしまうので「自分たちが作ったクラスをasで読み替えてしまうと(ライブラリとかで読み込んだものをasにするのならわかるのですが)、自明な意味合いを持ったクラスじゃないのかよ」って突っ込まれても仕方ないですね.

https://qiita.com/karak/items/b7af3cb2843c39fb3949