mirror of
https://github.com/nspcc-dev/neofs-sdk-go.git
synced 2026-03-01 04:29:18 +00:00
Think about ReadFrom/WriteToV2 one more time #205
Labels
No labels
I2
I3
I4
S1
S2
S3
S4
U0
U1
U2
U2
U2
U3
U4
blocked
bug
client
config
discussion
documentation
enhancement
epic
feature
go
good first issue
help wanted
performance
pool
question
security
task
test
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
nspcc-dev/neofs-sdk-go#205
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @carpawell on GitHub (Nov 15, 2023).
Problem
With
ReadFromV2it mostly always required more lines of code to achieve the same thing withToV2andFromV2that allocate structs inside. We can think about some helpers placed near the methods.Context
Updating SDK in some old code or writing a new code can be annoying with these totally necessary lines (when there is no need to reuse struct b/w reading or writing protocol conversions). This approach was presented in https://github.com/nspcc-dev/neofs-sdk-go/pull/170 and we had some long discussions, it was not an easy change.
@cthulhu-rider commented on GitHub (Nov 24, 2023):
normally conversion to and from message to SDK entities should be done in exactly one place: https://pkg.go.dev/github.com/nspcc-dev/neofs-sdk-go/client and https://pkg.go.dev/github.com/nspcc-dev/neofs-node@v0.38.1/pkg/network/transport respectively. V2-converters accidentally went beyond these two spaces of the system, so you are experiencing a headache
@carpawell commented on GitHub (Nov 24, 2023):
It does not matter if I need to use it in a single package or in a dozen packages, if I write tests, or if I am a regular SDK user. I just do it sometimes. The same way I encode cID and oID and maybe some other things that I forget about now. I just need more lines of (boilerplate) code for no reason (usually).
How can this help me?
@cthulhu-rider commented on GitHub (Dec 4, 2023):
@carpawell, u've not described the exact problem yet in form: i want this but the only way is to cast into v2. If u have the case, report it
if u have some useful helpers, just propose it in PR or create an enhancement issue
@carpawell commented on GitHub (Dec 4, 2023):
Why do we need cases for exported methods in the "SDK" repo? We already have them (methods) and we are not gonna delete them. Why do I need this? Why this file has to have
refspackage imported now? Why do i have to explicitly create a var to fill it in go?The same way I have to encode/decode addresses, IDs, etc. Why? That is not about V2 only.
We are discussing such an issue right now.
@roman-khimov commented on GitHub (Dec 6, 2023):
ReadFromis supposed to be more efficient in some cases (preallocated things, you know it). In practice we have a lot of cases where we do not have anything preallocated. AdditionalNewFromV2could be helpful to drop some repetitive code.