[기타] [vb.net] "하드코딩"과 "소프트코딩"(로딩)
하나를하더라도최선을
2022-06-29 11:31
5,016
0
본문
오래간만에 질문이 올라온 글을 보다가 아래와 같은 소스를 발견하였다.
Select Case m_cmbSaveAs.Text
Case "*.bmp"
m_bitmap.Save(strFileName, ImageFormat.Jpeg)
Case "*.jpg"
m_bitmap.Save(strFileName, ImageFormat.Jpeg)
Case "*.gif"
m_bitmap.Save(strFileName, ImageFormat.Gif)
Case "*.tif"
m_bitmap.Save(strFileName, ImageFormat.Tiff)
End Select
이와 같은 소스를 아래처럼 줄일 수 있다
Dim extension As String = IO.Path.GetExtension(strFileName).ToLower.Replace("jpg", "jpeg")
Dim imgFormat As ImageFormat = CType(GetType(ImageFormat).GetProperty(extension, BindingFlags.[Public] Or BindingFlags.[Static] Or BindingFlags.IgnoreCase).GetValue(Nothing, Nothing), ImageFormat)
m_bitmap.Save(strFileName, imgFormat)
둘 다 장단점이 있겠지만 난 아래 방법을 선호한다.
무엇보다 확장자 추가에 따른 대응이 쉽다는 장점이 있다
위 소스코드는 이미지 형식을 추가할 경우 더 많은 소스코드 수정이 들어간다.
댓글목록0