Two stale TODOs point at the same cleanup — constructScheduleProtobuf looks removable:
sdk/transaction.go:34 — the method is declared on TransactionInterface with // TODO remove this method if possible
sdk/file_append_transaction.go:285 — // TODO can be removed at some point on the FileAppendTransaction implementation, which is a one-line wrapper around buildScheduled()
Because it sits on TransactionInterface, every transaction type carries an implementation; the FileAppend one just delegates to buildScheduled(), and the rest look like the same boilerplate.
Scope: check whether the schedule-create path can call buildScheduled() directly (or whether any implementation does more than delegate). If nothing blocks it, drop the method from the interface and delete the per-transaction implementations. If it turns out to be load-bearing, replace both TODOs with a comment explaining why it stays.
Two stale TODOs point at the same cleanup —
constructScheduleProtobuflooks removable:sdk/transaction.go:34— the method is declared onTransactionInterfacewith// TODO remove this method if possiblesdk/file_append_transaction.go:285—// TODO can be removed at some pointon theFileAppendTransactionimplementation, which is a one-line wrapper aroundbuildScheduled()Because it sits on
TransactionInterface, every transaction type carries an implementation; the FileAppend one just delegates tobuildScheduled(), and the rest look like the same boilerplate.Scope: check whether the schedule-create path can call
buildScheduled()directly (or whether any implementation does more than delegate). If nothing blocks it, drop the method from the interface and delete the per-transaction implementations. If it turns out to be load-bearing, replace both TODOs with a comment explaining why it stays.