Skip to content

Commit 52ee242

Browse files
k-ibarakiclaude
andcommitted
refactor: eliminate duplicate header_range calculation
## 問題 `_calculate_header_range()`が同じ引数で2回呼び出されていた: - L456: マージセルキャッシュ構築時 - L495: データ取得時 ## 解決策 - `header_range = None`を事前に初期化 - L456で1回だけ計算 - L495で計算済みの値を再利用 ## 効果 - ✅ パフォーマンス向上(重複計算の削減) - ✅ 可読性向上(意図が明確) - ✅ 保守性向上(計算ロジックが1箇所のみ) ## テスト - 既存の全テスト(120個)が通過 - 動作に変更なし Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 273390b commit 52ee242

1 file changed

Lines changed: 12 additions & 13 deletions

File tree

src/sharepoint_excel.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@ def _parse_sheet(
428428
# セル範囲の正規化・拡張(cell_rangeがある場合)
429429
# マージセル情報のキャッシュに使用するため、先に計算する
430430
effective_range_for_merge = None
431+
header_range = None # ヘッダー範囲(再利用のため事前に初期化)
431432
if cell_range:
432433
sheet_data["requested_range"] = cell_range
433434
effective_range = self._normalize_column_range(cell_range, sheet)
@@ -491,20 +492,18 @@ def _parse_sheet(
491492

492493
else:
493494
# ヘッダー自動追加(include_frozen_rows=Trueの場合)
494-
if include_frozen_rows and frozen_rows > 0:
495-
header_range = self._calculate_header_range(effective_range, frozen_rows)
496-
497-
if header_range:
498-
# ヘッダー範囲を取得
499-
header_data = sheet[header_range]
500-
header_rows = self._normalize_range_data(header_data)
501-
all_rows.extend(
502-
self._parse_rows(
503-
header_rows,
504-
merged_cell_map,
505-
merged_anchor_value_map,
506-
)
495+
# header_rangeは既に計算済み(L456付近)なので再利用
496+
if header_range:
497+
# ヘッダー範囲を取得
498+
header_data = sheet[header_range]
499+
header_rows = self._normalize_range_data(header_data)
500+
all_rows.extend(
501+
self._parse_rows(
502+
header_rows,
503+
merged_cell_map,
504+
merged_anchor_value_map,
507505
)
506+
)
508507

509508
# 通常のセル範囲取得(データ範囲)
510509
range_data = sheet[effective_range]

0 commit comments

Comments
 (0)