React Native/Expo 移動應用開發規範
# React Native/Expo 移動應用開發規範
## 程式碼風格與結構
- 編寫簡潔、類型安全的 TypeScript 程式碼
- 使用函數式組件和 Hook,而非類組件
- 確保組件模塊化、可重用且易於維護
- 按功能組織文件,將相關組件、Hook 和樣式分組
## 命名規範
- 變數和函數名稱使用 camelCase(如 `isFetchingData`、`handleUserInput`)
- 組件名稱使用 PascalCase(如 `UserProfile`、`ChatScreen`)
- 目錄名稱使用小寫字母和連字號(如 `user-profile`、`chat-screen`)
## TypeScript 使用
- 所有組件使用 TypeScript,優先使用 interface 定義 props 和 state
- 在 `tsconfig.json` 中啟用嚴格類型檢查
- 避免使用 `any` 類型,追求精確類型定義
- 使用 `React.FC` 定義帶有 props 的函數式組件
## 性能優化
- 最小化 `useEffect`、`useState` 和在渲染方法中的重計算
- 對靜態 props 的組件使用 `React.memo()` 防止不必要的重新渲染
- 使用 FlatList 性能優化屬性:`removeClippedSubviews`、`maxToRenderPerBatch`、`windowSize`
- 當項目大小一致時使用 `getItemLayout` 提升 FlatList 性能
- 避免在 `renderItem` 或事件處理程序中使用匿名函數
## UI 與樣式
- 使用一致的樣式方案:`StyleSheet.create()` 或 Styled Components
- 考慮不同屏幕尺寸和方向,確保響應式設計
- 使用專為 React Native 設計的圖片處理庫(如 `react-native-fast-image`)
## 最佳實踐
- 遵循 React Native 的線程模型確保流暢的 UI 性能
- 使用 Expo EAS Build 和 Updates 進行持續部署和 OTA 更新
- 使用 React Navigation 處理導航和深度鏈接