Stage 2 summary at 50 accepted trajectories

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Kral
2026-10-05 18:02:52 +02:00
parent 332fb4601d
commit 5bcd1bf9cd
1230 changed files with 77563 additions and 33 deletions

View File

@@ -0,0 +1,53 @@
# 1. Goal
Refactor the class {{P}}CLIMB_PRICER in package $TMP. The class calculates the
price of a climbing session at a climbing centre. The booking program of the
centre calls the class for each session. The class is correct today, but the
code is hard to read and hard to change. Make the code clean and easy to
change. The behavior must stay the same.
# 2. Open questions
None.
# 3. Context
- The class {{P}}CLIMB_PRICER exists in package $TMP. It is active.
- The booking program calls the method PRICE and then reads the components of
the result structure.
- No user reports a wrong price. All prices are correct.
- The implementation is one long method with deep nesting and many literal
values. A change to one rate is risky.
# 4. Contract
- Refactor the class {{P}}CLIMB_PRICER in package $TMP. The name stays the
same.
- The class is public and final. It has a public constructor without
parameters.
- The public interface must not change. It is:
- TYPES ty_entry TYPE c LENGTH 1.
- TYPES ty_amount TYPE p LENGTH 8 DECIMALS 2.
- TYPES ty_session with the components entry_type TYPE ty_entry,
hours TYPE i, climbers TYPE i, equipment TYPE abap_bool,
member TYPE abap_bool and visits TYPE i.
- TYPES ty_result with the components base TYPE ty_amount,
surcharge TYPE ty_amount, discount TYPE ty_amount, total TYPE ty_amount
and message TYPE string.
- METHODS price IMPORTING is_session TYPE ty_session
RETURNING VALUE(rs_result) TYPE ty_result.
- Do not add other public methods or public types.
# 5. Business rules
The legacy code contains all the rules. Read the code of {{P}}CLIMB_PRICER
before you change it. Each input must give the same result as the legacy code.
Keep each limit, each rate, each surcharge, each discount and each message
text.
# 6. Constraints
- Release target: 8.16.
- Coding standards: Clean ABAP. Methods below 40 statements. No global
variables. No magic numbers. No comment that restates the code.
- Out of scope: do not change the public interface of {{P}}CLIMB_PRICER. Do not
create other objects.
# 7. Acceptance
- The class is active and has no syntax error.
- The hidden tests pass.
- Write your own ABAP Unit tests for the class.