-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
제시하신 조건만을 놓고 본다면 두 번째 방법이 더 좋다고 생각합니다.
첫 번째 방법의 경우 UpdateUI()함수가 m_LifeCount라는 멤버의 존재 및 m_LifeCount변수값을 변경하는 루틴에 의존하게 되는 문제가 있습니다.
따라서 유지 보수 시 m_LifeCount라는 멤버의 삭제 혹은 변경이 일어날 경우 모든 UpdateUI()함수 호출부 및 UpdateUI()자체의 수정이 필요합니다.
반면 두 번째 방법의 경우 UpdateUI(int)함수 자체만 수정해줘도 되므로 캡슐화나 모듈화가 더 잘된 구조인 것 같습니다.
멤버변수와 멤버함수가 연동되는 구조
내용을 요약하기가 너무 애매해서 제목을 저렇게 지은점 죄송합니다. :oops:
투표를 하시기 전에 이 글을 꼭 읽고 해주세요.!
이런 상황이 있다고 해봅시다..
여기서 this->m_GUI.SetWindowText 이후로 ui를 세팅하는 부분이 꽤나 많고 이곳저곳에서 자주 사용되기 때문에 저 부분을 아래와 같이 함수로 분리를 해본다고 하면..
와 같이 될 것입니다.
ui를 업데이트 하는데 필요한 값은 this->m_LifeCount이 값 뿐입니다. 이때 이를 구현하는 방법은 아래와 같이 두가지를 생각할 수 있습니다.
첫번째 방법
두번째 방법
이 두가지 방법중 어느것을 선호하십니까?
투표와 같이 여러분께서 생각하시는 각각의 장단점을 같이 적어주세요. :)
-------------------------------------------------------------------------------
It's better to appear stupid and ask question than to be silent and remain stupid.
두 번째 방법 아닌가요?1번째 방법의 경우 사용자가 UpdateU
두 번째 방법 아닌가요?
1번째 방법의 경우 사용자가 UpdateUI를 부르기 전에 항상
this->m_LifeCount = Pinfo.Life;
을 설정 해 주어야 하는데 까먹을 수 있죠.
제가 비슷한 코드를 만든다면, UpdateUI()는 여러 변경 사항이 있을 경우 한꺼번에 변경 사항을 적용 하는 경우에 사용하고, UpdateUI((int ...)은 이름을 UpdateUILine(int ...)로 해서 라인만 업데이트 하는 경우에 사용하겠습니다.
https://wiki.ubuntu.com/KoreanTeam
...
제시하신 조건만을 놓고 본다면 두 번째 방법이 더 좋다고 생각합니다.
첫 번째 방법의 경우 UpdateUI()함수가 m_LifeCount라는 멤버의 존재 및 m_LifeCount변수값을 변경하는 루틴에 의존하게 되는 문제가 있습니다.
따라서 유지 보수 시 m_LifeCount라는 멤버의 삭제 혹은 변경이 일어날 경우 모든 UpdateUI()함수 호출부 및 UpdateUI()자체의 수정이 필요합니다.
반면 두 번째 방법의 경우 UpdateUI(int)함수 자체만 수정해줘도 되므로 캡슐화나 모듈화가 더 잘된 구조인 것 같습니다.
------------------------
http://agbird.egloos.com
저는 전자입니다.
MyClass내의 함수가 많고 멤버변수들을 많이 참조할수록 전자가 유리해집니다.
예를 들어 메일을 보내는 클래스라고 할때 제목, 내용, 받을사람 등 여러가지 값을 세팅해둔후 마지막에 send를 해야겠죠. send안에 여러가지 값을 다 넣을것 같으면 클래스와 멤버변수를 만든 의미가 없죠.
제시하신 예에서도 값들 세팅할것 있으면 다 세팅하고 마지막에 UpdateUI를 해주는게 맞다고 봅니다.
세팅할게 많지 않다면 setAutoUpdate(true) 같은 함수를 마련해두고 setXxxx(xx) 함수를 만들어서 이 함수에서 멤버값을 세팅한후 바로 autoUpdate여부에 따라서 Update를 해주는것도 좋겠죠.
c#이라면 8) [code:1]private int m_Life
c#이라면 8)