함수가하는 일과 클래스가하는 일 사이에는 큰 차이가있었습니다.
처음부터 설명하겠습니다 .🙂 ( 명령어에 대해서만)
프로그래밍 역사, 우리 모두는 기본적인 명령 (예 : 어셈블리)으로 시작한다는 것을 알고 있습니다.
다음 구조화 된 프로그래밍은 흐름 제어와 함께 제공됩니다 (예 : if, switch, while, for 등).이 패러다임은 프로그래머에게 프로그램의 흐름을 효과적으로 제어하고 루프별로 코드 줄 수를 최소화 할 수 있도록합니다.
다음 절차 프로그래밍이 왔고 명령어를 절차 (기능)로 그룹화했습니다. 이것은 프로그래머에게 두 가지 주요 이점을 제공했습니다.
1. 문 (연산)을 별도의 블록으로 그룹화합니다.
2.이 블록을 재사용 할 수 있습니다. (기능)
그러나 무엇보다도 패러다임은 애플리케이션 관리를위한 솔루션을 제공 하지 못했습니다 . 절차 적 프로그래밍은 소규모 애플리케이션에만 사용할 수 있습니다. 대규모 웹 애플리케이션 (예 : 뱅킹, 구글, 유튜브, 페이스 북, 스택 오버 플로우 등) 개발에는 사용할 수 없으며, 안드로이드 SDK, 플러터 SDK 등과 같은 프레임 워크를 만들 수 없습니다.
따라서 엔지니어는 프로그램을 적절한 방식으로 관리하기 위해 더 많은 연구를 수행합니다.
마지막으로 객체 지향 프로그래밍 은 모든 규모의 애플리케이션을 관리하기위한 모든 솔루션과 함께 제공됩니다 (hello world에서 시스템 생성을 사용하는 수많은 사람들 (예 : Google, amazon 및 현재 애플리케이션의 90 %)에 이르기까지).
oop에서 모든 애플리케이션은 객체를 중심으로 구축되며 이는 애플리케이션이 이러한 객체의 모음임을 의미합니다.
따라서 객체는 모든 응용 프로그램의 기본 건물입니다.
클래스 (런타임시 객체)는 해당 변수 (데이터)와 관련된 데이터 및 함수를 그룹화합니다. 따라서 객체는 데이터 및 관련 작업으로 구성됩니다.
[여기에 대해 설명하지 않겠습니다]
👉👉👉Ok Now 플러터 프레임 워크를 시작하겠습니다 .👈👈👈
-Dart는 절차 적 및 oop를 모두 지원하지만, Flutter 프레임 워크는 클래스 (oop)를 사용하여 완전히 구축됩니다. (대형 관리 가능한 프레임 워크는 절차를 사용하여 만들 수 없기 때문에)
여기에서는 위젯을 만드는 데 함수 대신 클래스를 사용하는 이유 목록을 만들 것입니다.
1-대부분의 경우 빌드 메소드 (하위 위젯) 가 동기 및 비동기 함수의 수를 호출 합니다.
전의:
- 네트워크 이미지를 다운로드하려면
- 사용자 등으로부터 입력 받기
따라서 빌드 메소드는 별도의 클래스 위젯에 보관해야합니다 (build () 메소드에 의해 호출 된 다른 모든 메소드가 하나의 클래스에 보관 될 수 있기 때문).
2-위젯 클래스를 사용하면 동일한 코드를 반복해서 작성하지 않고도 여러 클래스를 생성 할 수 있습니다 (** 상속 사용 ** (확장)).
또한 상속 (확장) 및 다형성 (재정의)을 사용하여 사용자 정의 클래스를 만들 수 있습니다. (아래 예제 아래에서 MaterialPageRoute를 확장하여 애니메이션을 사용자 정의 (재정의)합니다 (기본 전환을 사용자 정의하고 싶기 때문에) .👇
class MyCustomRoute<T> extends MaterialPageRoute<T> {
MyCustomRoute({ WidgetBuilder builder, RouteSettings settings })
: super(builder: builder, settings: settings);
@override //Customize transition
Widget buildTransitions(BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
if (settings.isInitialRoute)
return child;
// Fades between routes. (If you don't want any animation,
// just return child.)
return new FadeTransition(opacity: animation, child: child);
}
}
3-함수는 매개 변수에 대한 조건을 추가 할 수 없습니다.하지만 클래스 위젯의 생성자를 사용하면됩니다.
아래 코드 예제 👇 (이 기능은 프레임 워크 위젯에서 많이 사용됨)
const Scaffold({
Key key,
this.bottomNavigationBar,
this.bottomSheet,
this.backgroundColor,
this.resizeToAvoidBottomPadding,
this.resizeToAvoidBottomInset,
this.primary = true,
this.drawerDragStartBehavior = DragStartBehavior.start,
this.extendBody = false,
this.extendBodyBehindAppBar = false,
this.drawerScrimColor,
this.drawerEdgeDragWidth,
}) : assert(primary != null),
assert(extendBody != null),
assert(extendBodyBehindAppBar != null),
assert(drawerDragStartBehavior != null),
super(key: key);
4-함수는 const를 사용할 수 없으며 클래스 위젯은 생성자에 const를 사용할 수 있습니다. (메인 스레드의 성능에 영향을 미침)
5-동일한 클래스 (클래스 / 객체의 인스턴스)를 사용하여 여러 개의 독립 위젯을 만들 수 있지만 함수는 독립 위젯 (인스턴스)을 만들 수 없지만 재사용 할 수 있습니다.
[각 인스턴스에는 자체 인스턴스 변수가 있고 다른 위젯 (객체)과 완전히 독립적이지만 함수의 로컬 변수 는 각 함수 호출 *에 따라 다릅니다. 즉, 로컬 변수의 값을 변경하면 다른 모든 부분에 영향을 미칩니다. 이 기능을 사용하는 애플리케이션)]
클래스에는 함수보다 많은 장점이 있습니다. (위에는 몇 가지 사용 사례 만 있습니다)
🤯 나의 최종 생각
따라서 함수를 애플리케이션의 빌딩 블록으로 사용하지 말고 오퍼레이션을 수행 할 때만 사용하십시오. 그렇지 않으면 응용 프로그램이 확장 될 때 처리 할 수없는 많은 문제가 발생합니다 .
- 작업의 작은 부분을 수행하기위한 기능 사용
- 클래스를 응용 프로그램의 구성 요소로 사용 (응용 프로그램 관리)
📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍 📍📍📍📍📍📍📍
사용 된 문장 (또는 줄)의 수로 프로그램의 품질을 측정 할 수 없습니다.
📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍📍 📍📍📍📍📍📍📍
읽어 주셔서 감사합니다