{"id":18914205,"url":"https://github.com/sc0v0ne/replace_query_with_parameter","last_synced_at":"2026-04-28T18:05:43.941Z","repository":{"id":40776844,"uuid":"493360359","full_name":"sc0v0ne/replace_query_with_parameter","owner":"sc0v0ne","description":"Replace Query With Parameter","archived":false,"fork":false,"pushed_at":"2022-06-27T19:53:36.000Z","size":5539,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T14:47:41.490Z","etag":null,"topics":["college","college-project","jupyter-notebook","martin-fowler-book","pytest","python","python3","refactor","refactoring","testbook"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sc0v0ne.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-17T18:01:05.000Z","updated_at":"2022-06-27T22:11:00.000Z","dependencies_parsed_at":"2022-08-31T07:41:15.389Z","dependency_job_id":null,"html_url":"https://github.com/sc0v0ne/replace_query_with_parameter","commit_stats":null,"previous_names":["sc0v0ne/replace_query_with_parameter"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc0v0ne%2Freplace_query_with_parameter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc0v0ne%2Freplace_query_with_parameter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc0v0ne%2Freplace_query_with_parameter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sc0v0ne%2Freplace_query_with_parameter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sc0v0ne","download_url":"https://codeload.github.com/sc0v0ne/replace_query_with_parameter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239907240,"owners_count":19716584,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["college","college-project","jupyter-notebook","martin-fowler-book","pytest","python","python3","refactor","refactoring","testbook"],"created_at":"2024-11-08T10:10:36.336Z","updated_at":"2026-03-09T18:30:19.139Z","avatar_url":"https://github.com/sc0v0ne.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Replace Query with Parameter\n\n🎓 College: [Faculdade Metodista Granbery](http://granbery.edu.br/)\n\n👨‍🏫 Teacher: [Marco Antônio - Github](https://github.com/marcoaparaujo) | [Linkedin](https://www.linkedin.com/in/marco-ant%C3%B4nio-ara%C3%BAjo/)\n\n📗 Book: [Refatoração - Aperfeiçoando o design de códigos existentes - Martin Fowler](https://www.amazon.com/-/pt/dp/B087N8LKYB/ref=sr_1_1?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91\u0026crid=M4T29CCKD30E\u0026keywords=refatora%C3%A7%C3%A3o\u0026qid=1651322207\u0026sprefix=refatora%C3%A7%C3%A3o%2Caps%2C203\u0026sr=8-1)\n\n\u003e FOWLER, Martin. “Replace Query with Parameter” no código. *In*: REFATORAÇÃO: Aperfeiçoando o design de códigos existentes. 2. ed. [*S. l.*: *s. n.*], 2019. cap. 11.\n\u003e \n\n## Método\n\nObjetivo desse método e retirar a consulta dentro função que está em uma dependência indesejada e trazer uma função que traga sempre o mesmo resultado  que se chama transparência referencial. \n\n## Código\n\nO código que escolhi foi uma atividade dado em aula pelo Professor Ricardo. Essa função recebe um parâmetro de nomes de coluna do dataset, os dados são verificados pela sua severidade e depois ocorre sua substituição dos valores ausentes de acordo com o seu tipo.\n\nO código pode ser encontrado na plataforma [Kaggle](https://www.kaggle.com/code/edmilsoneddi/data-mining-discipline-exercise)\n\n## Ferramentas\n\n```bash\n    pip install ipytest\n```\n\n```bash\n    pip install testbook\n```\n\n```bash\n    pip install pandas\n```\n\n```bash\n    pip install jupyter\n```\n\n## Objetivo da atividade\n\n1. Elabore ou escolha um código que a refatoração possa ser aplicada.\n2. Identifique o mau cheiro associado.\n3. Escreva os casos de teste e execute\n4. Aplique a refatoração\n5. Execute os casos de teste novamente\n6. Documente cada etapa para a apresentação\n\n## Mau Cheiro\n\n### Lista longa de parâmetros\n\nO mau cheiro que encontrei dentro do código abaixo foi o lista longa de parâmetros, sendo que esse mal cheiro é para método ‘Replace Parameter with Query’, mas esse método e o inverso do ‘Replace Query with Paramater’, sendo assim o seu mal cheiro será o inverso. O mal cheiro será de **consultas longas** que trazem **confusão** para realizar a **compreensão do código**. \n\n## Procedimento\n\n## Código sem refatoração\n\n![funcaoSemRefatoracao.png](images/funcaoSemRefatoracao.png)\n\n## Teste sem refatoração\n\n![testeSemRefatoracao.png](images/testeSemRefatoracao.png)\n\n## Código novo aplicando a refatoração\n\n## Use Extrair variável (Extract Variable) no código da consulta para separá-lo do restante do corpo da função.\n\n![extractVariable.png](images/extractVariable.png)\n\n## Aplique Extrair função (Extract Function) no código do corpo que não seja a chamada da consulta.\n\n## Dê à nova função um nome fácil de pesquisar, para poder renomeá-la depois.\n\n![extractFunction.png](images/extractFunction.png)\n\n## Use Internalizar variável (Inline Variable) para se livrar da variável que você acabou de criar.\n\n![inlineVariable.png](images/inlineVariable.png)\n\n## Aplique Internalizar função (Inline Function) na função original.\n\n![inlineFunction.png](images/inlineFunction.png)\n\n## Renomeie a nova função dando-lhe o nome da função original.\n\n![renomear.png](images/renomear.png)\n\n## Realização do Teste\n\n![testeComRefatoracao.png](images/testeComRefatoracao.png)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsc0v0ne%2Freplace_query_with_parameter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsc0v0ne%2Freplace_query_with_parameter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsc0v0ne%2Freplace_query_with_parameter/lists"}