2017-04-19 11 views

Odpowiedz

0

jeśli zaczynają świeży projekt z myślą o użyciu tylko Swift w przyszłości, wtedy tworzę nowy projekt Swift, a następnie link do ramy Objective-C. To właśnie robiliśmy w miejscu, w którym pracuję i powoli z czasem usuwaliśmy z projektu Objective-C wszystko, czego nie używamy. Może to nie być szybsze niż zaimportowanie wszystkiego do tego samego projektu, ale spowoduje, że twój kod będzie trochę oddzielony od starego kodu Objective-C.

+0

OK, dziękuję za szybką reakcję! Ale, co jest najmniej restrykcyjne? A najszybszy? Ale tak, w terminach chcemy mieć tylko Swift App – ExPl0siF

+0

Nie znalazłem sugerowanej przeze mnie metody bardzo restrykcyjnej.Jest to raczej szybki proces, poza importowaniem nagłówków, których możesz potrzebować w projekcie Swift. Ale zamiast najszybszego, myślę, że powinieneś rozważyć, co będzie dla ciebie lepsze w przyszłości. Prawdopodobnie byłoby szybciej zaimportować cały kod Objective-C do twojego nowego projektu, ale wtedy w twoim nowym projekcie miałbyś sporo starego kodu. – totiG

+0

Wielkie dzięki. Więc pomyślimy z tymi elementami, aby dokonać naszego wyboru! – ExPl0siF

3

Po tym, jak spędziłem migrację projektu do Swift, mogę powiedzieć, że nie jest to srebrna kula w tym pytaniu. To naprawdę zależy od przepływu, który jest ustawiony-app w zespole, który pracujesz.

Z mojego punktu widzenia i doświadczenia powinieneś wziąć istniejący projekt i zacząć pisać całą nową logikę używając Swift i równolegle spróbować przepisać prawników biznesowych aplikacji w nowoczesny sposób. Na przykład warstwa sieciowa, warstwa bazy danych. W ten sposób zmniejszasz regresję aplikacji i otrzymujesz kontrolowany przepływ migracji.

Plusy:

  • nowa logika będzie Swift.
  • Migracja krok po kroku będzie równoważona regresji .
  • suport kodu starszego typu, które można przerobić na Swift
  • kod
  • Pisanie w Swift sposób (protokoły, funkcja, rodzajowych, budowle)

Wady:

  • Czas
  • Regresja aplikacji
  • Dość duże przepisanie kodu.
+0

OK, dzięki! Teraz mamy wiele rozwiązań z wytłumaczeniem, poproszę mój zespół o wybór najlepszej metody dla nas. Dzięki ! – ExPl0siF

1

To bardzo skomplikowane pytanie i odpowiedź brzmi: Zależy ... Myślę, że istnieje kilka pytań, które sprawiają, zanim twoja odpowiedź:

  • jest twój projekt „open”, zespół jest rozwijanie nowych funkcji w tej samej bazie kodu? lub ma solidną i niezawodną podstawę kodu i tylko trochę zmian?
  • Czy Twoja firma może sobie pozwolić na "Nową WERSJĘ" w całości wykonaną w Swift z nową techniką?

Zasadniczo mieć duże Refactor (jako migracji językowej) polega zadanie re-engineering też większość rzeczy nie będzie działać, jeśli tylko transkryptu bazę kodu, a jeśli tak zrobisz, tracisz wszystkie SWIFT korzyści i nie ma sytuacji, w której można zmienić kod.

Moim zdaniem stworzenie nowego projektu to dobra rzecz, jeśli stworzysz nową wersję aplikacji. Jest czystszy, jest lepszy, ale jak powiedziałem, będzie dużo pracy i przeprojektowania.

W przeciwnym razie, wystarczy osadzić kod Swift w aplikacji działającej w Objective-C, spowoduje to wiele problemów i zamieszania. Ale jest szybszy i możesz kontynuować korzystanie z nowych funkcji i wprowadzać ulepszenia do swojej aplikacji.

+0

Dziękuję bardzo! Teraz wybierzemy najlepszą metodę dla nas z tymi elementami! :) – ExPl0siF

1

Oto moje 2 centy na Twój problem: Polecam powolną konwersję kodu lub raczej refactoring do Swift, jeśli jest to wymagane dla nowych części kodu. Co więcej, jeśli przekonwertowany kod jest obecnie używany w innych projektach pobocznych (oddziałach funkcji itp.), Nie można zagwarantować, że nadal będzie działał prawidłowo.

Mam nadzieję, że masz testy jednostkowe, ponieważ te mogą ułatwić życie. W każdym razie rozważ aspekt testowania regresyjnego funkcji twojej aplikacji. Biblioteki, których używasz, musiałyby być teraz frameworkami (niektóre biblioteki mogą nie skompilować się jako Framework, bądź tego świadomy).

JEŚLI naprawdę chcesz przekonwertować bazę kodu, zrobiłbym to hirarchicznie.

  1. Rozważmy całą warstwę aplikacyjną i wewnątrz tej warstwy poszczególnych klas.

  2. Zacznij pisać testy dla tych klas (można to zrobić w Swift, zbyt), test Unit test Integracja, UI Testy

  3. Konwersja klasę, do szybkiej klasie (należy zwrócić uwagę, że niektóre logika może zmienić a także inne funkcje mogą być dotknięte)

  4. Wstaw nagłówek pomostowy (jeśli jest to konieczne), którego można użyć jako interfejsu warstwy aplikacji do innych interfejsów - poprawiłoby to nawet zrozumienie różnych części kodu odtwarzanych razem. Jeśli zauważysz jakieś dziwne deklaracje. Rzeczy są publiczne, zbyt wiele losowych wejść dla różnych klas lub czegoś. Jeszcze tego nie dotykaj. W rzeczywistości, trzeba pamiętać, że w dół

  5. Wykonaj szeroko zakrojone badania małych zmian

  6. Zacznij od nowa z następnej klasy

  7. Jeżeli wszystkie klasy zakończeniu na bieżącej warstwie aplikacji, a ty nic nie złamał. Dobra robota. Teraz spójrz na swoje notatki.

  8. Przejdź do następnej warstwy.

W skrócie: Konwertowałbym te części na Swift, które i tak wymagają zmiany (refaktoryzacja, nowe funkcje, błędy, cokolwiek). Jeśli kod działał, a nie widzisz innego powodu niż "no, teraz to jest Swift", uwzględniłbym tylko konwersję, gdybym naprawdę miał na to czas, w przeciwnym razie możesz złamać działający kod, a nawet architekturę, która została skonfigurowana, co różni się w niektórych przypadkach od Swift i Objective-C.

Jeśli naprawdę czujesz, że jesteś mężczyzną w tym: Zacznę pisać testy ;-) Testy jednostek, integracji i interfejsu użytkownika. Pomoże ci to z twoją bazą CURRENT, ale także z twoją przyszłą bazą kodu, czy to w Objective-C czy Swift. Jest to bardzo pomocne przy konwersji kodu na Swift.

Powiązane problemy