Recentemente voltei a estudar visão computacional, confesso que é uma área bem fascinante e um tanto complexa. Pois bem, é muito comum em meus estudos, eu me deparar com códigos que por si só, não transmitem um significado conciso sobre o que eles realizam. Clean code é uma filosofia aonde você aplica técnicas para deixar o código mais descritivo sobre o que ele faz, quem nunca viu aquelas variáveis x, y, z, ix, iy
ou aquelas funções do_something(), apply(), convert()
. O domínio de visão computacional por si só já é complexo, se o código não for legível, fica mais difícil ainda. Ainda poderiamos falar de object calisthenics ou S.O.L.I.D; contudo, é comum fazer uso do jupyter aonde o estruturado reina, a realidade é que você não precisa forçar seu código a passar com sucesso por object calisthenics ou outras filosofias voltadas para OOP. Dar um bom nome as coisas e separar as responsabilidades, é um avanço mais que ideal. I know, I know, nomear não é uma tarefa simples mas podemos tentar evitar esses x's
e esses y's
.
Quick tip 1
f = sys.argv[1]
i = cv2.imread(f, 0)
w = i.shape[1]
h = i.shape[0]
Nunca abrevie, não existem motivos para abreviar, a preguiça é um caminho sem volta. Tanto você quanto quem for analisar o código, vai perder tempo tentando entender essas abreviações.
Quick tip 2
def draw(img):
# code
def convert(img):
# code
Tente usar um nome que esclarece o que aquela função ou class vai realizar, um draw_circle()
por exemplo, se tiver um caso com muitas figuras a serem desenhadas, use uma interface com os métodos: draw_circle()
, draw_triangle()
e etc. A ideia é separar as responsabilidades e dar um bom nome as coisas, como você vai fazer isso, deixo ao seu critério ^^
Quick tip 3
ix = -1
iy = -1
magnitude_spectrum = 20 * np.log(cv2.magnitude(dft_shift[:, :, 1], dft_shift[:, :, 1]))
Não use números mágicos, no momento em que você está programando, você sabe o que é o -1
ou 20
; entretanto, depois de um tempo aquilo pode não fazer mais nenhum sentido para você, muito menos para quem não escreveu o código. É comum colocar esses números em constantes com nomes descritivos sobre o que eles são.
Isso são pequenos exercícios para você praticar no momento da codificação, comece aos poucos e tranforme em uma rotina ^^
Extras
Como normalmente a gente vai está utilizando python, tente seguir a PEP 8, isso é muito importante. Você pode utilizar algum code formatter para facilitar sua vida, como o Jupyterlab Code Formatter
Leia o livro Código Limpo do Robert C. Martin, é um bom livro para ler antes de dormir ^^
Top comments (2)
Muito bom o post! único problema dele, é que ele acaba! hahaha
Thankiu man ^^