13 Stimmen

Bauherren in Java versus C++?

In Googles Protokoll Puffer API für Java, verwenden sie diese netten Builder, die ein Objekt erstellen (siehe ici ):

Person john =
  Person.newBuilder()
    .setId(1234)
    .setName("John Doe")
    .setEmail("jdoe@example.com")
    .addPhone(
      Person.PhoneNumber.newBuilder()
        .setNumber("555-4321")
        .setType(Person.PhoneType.HOME))
    .build();

Die entsprechende C++-API verwendet jedoch keine solchen Builders (siehe ici )

Die C++- und die Java-API sollen das Gleiche tun, also frage ich mich, warum man nicht auch in C++ Builder verwendet hat. Gibt es sprachliche Gründe dafür, d.h. ist es nicht idiomatisch oder ist es in C++ verpönt? Oder ist es vielleicht nur die persönliche Vorliebe der Person, die die C++-Version von Protocol Buffers geschrieben hat?

0voto

Douglas Leeder Punkte 50423

In C++ muss der Speicher explizit verwaltet werden, was die Verwendung des Idioms wahrscheinlich noch mühsamer machen würde - entweder build() muss den Destruktor für den Builder aufrufen, oder man muss ihn in der Nähe behalten, um ihn zu löschen, nachdem man die Person Objekt. Beides ist mir ein wenig unheimlich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X