Skip to content

Latest commit

 

History

History
75 lines (56 loc) · 2.35 KB

code_sesign_policy.md

File metadata and controls

75 lines (56 loc) · 2.35 KB

コード設計のポリシー

このドキュメントは、deleteUnreadPromotions 関数のリファクタリングと設計方針について説明します。

  1. メールの取得: fetchEmailThreads 関数を使用して、特定のクエリに一致するメールを取得します。
  2. メールの削除: deleteThreads 関数を使用して、取得したメールをゴミ箱に移動します。

設計観点

単一責任原則 (Single Responsibility Principle)

各関数は一つのタスクだけを行います。これにより、コードの再利用性と可読性が向上します。

deleteThreadsのような非常に単純な関数については、確かに冗長に感じるかもしれません。ただ、このような小さな関数でも独立させることで、将来的に同じような処理が他の場所で必要になったときに再利用しやすくなります。しかし、確かにこのケースでは少し冗長かもしれません。

可読性 (Readability)

コードは読みやすく、適切なコメントが追加されています。これにより、他の開発者がコードを理解しやすくなります。

例)

/**
 * Fetches email threads based on the query.
 */

再利用性 (Reusability)

各関数は独立しているため、他の場所でも再利用しやすいです。

例)

function deleteThreads(threads) {
  threads.forEach(thread => thread.moveToTrash());
}

拡張性 (Extensibility)

新しい機能を追加する際に、既存のコードを少ししか変更しなくても済むようになっています。

例)

function isTimeExceeded(startTime, maxTime) {
  const currentTime = new Date().getTime();
  if (currentTime - startTime > maxTime) {
    Logger.log('Approaching maximum execution time. Exiting.');
    return true;
  }
  return false;
}

エラーハンドリングとロギング (Error Handling and Logging)

エラーが発生した場合には、それをログに出力するようにしています。

例)

function logError(error) {
  Logger.log(`An error occurred: ${error.toString()}`);
}

例)

try {
  // Code that might throw an error
} catch (e) {
  logError(e);
  success = false;
} finally {
  Logger.log('Operation completed.');
}