我問ChatGPT:請問這兩段程式碼要怎麼合併比較恰當?
        public List<TodoRecord> GetRecords()
        {
            string filePath = _todoViewModel.RecordFileName;
            if (File.Exists(filePath))
            {
                // Read the file
                string json = File.ReadAllText(filePath);
                try
                {
                    // Deserialize JSON
                    _todoViewModel.todoRecords = JsonSerializer.Deserialize<List<TodoRecord>>(json);
                    return _todoViewModel.todoRecords;
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                return _todoViewModel.todoRecords;
            }
        }
        public List<TodoTitle> GetTitles()
        {
            string filePath = _todoViewModel.TitleFileName;
            if (File.Exists(filePath))
            {
                // Read the file
                string json = File.ReadAllText(filePath);
                try
                {
                    // Deserialize JSON
                    _todoViewModel.todoRecords = JsonSerializer.Deserialize<List<TodoRecord>>(json);
                    return _todoViewModel.todoTitles;
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                return _todoViewModel.todoTitles;
            }
        }ChatGPT:這兩段程式碼的目的是讀取不同的檔案,然後反序列化 JSON,最後返回相應的清單。為了合併這兩個方法,你可以將它們的相似邏輯提取出來,並將檔案路徑和返回的清單作為參數傳遞。以下是合併後的程式碼:
public List<T> GetItems<T>(string filePath, List<T> targetList)
{
    if (File.Exists(filePath))
    {
        // Read the file
        string json = File.ReadAllText(filePath);
        try
        {
            // Deserialize JSON
            targetList = JsonSerializer.Deserialize<List<T>>(json);
            return targetList;
        }
        catch (Exception)
        {
            throw;
        }
    }
    else
    {
        return targetList;
    }
}
public List<TodoRecord> GetRecords()
{
    string filePath = _todoViewModel.RecordFileName;
    return GetItems(filePath, _todoViewModel.todoRecords);
}
public List<TodoTitle> GetTitles()
{
    string filePath = _todoViewModel.TitleFileName;
    return GetItems(filePath, _todoViewModel.todoTitles);
}
