C贸mo encontrar un ejemplo de c贸digo que puede ayudarle

Antes de comenzar una nueva tarea de codificaci贸n, creo que normalmente vale la pena dedicar al menos un poco de tiempo a buscar un ejemplo de trabajo relacionado, especialmente cuando la tarea se refiere a bibliotecas o conceptos desconocidos.

Si puedo encontrar un buen ejemplo, al hojearlo, mi cerebro se mueve en la direcci贸n correcta y siento que estoy absorbiendo algunas de sus lecciones.

Es m谩s probable que mi proyecto se desarrolle sin problemas, incluso si no utilizo una sola l铆nea de c贸digo del ejemplo, pero encontrar ese buen ejemplo no siempre es tan f谩cil y la b煤squeda en s铆 misma puede hacer perder mucho tiempo. Este art铆culo ofrece consejos sobre c贸mo encontrar r谩pidamente buenos ejemplos de c贸digo.

La caza del tesoro lleva demasiado tiempo

Por lo general, mi esperanza es encontrar un repositorio que utilice la biblioteca o el contexto que estoy investigando, algunos repositorios que generalmente est谩n bien escritos y no son demasiado grandes o abrumadores.he encontrado que los motores de b煤squeda, incluso los dedicados a la b煤squeda de c贸digo, son en su mayor铆a frustrantes e improductivos.

Las b煤squedas simples que utilizan palabras clave razonables rara vez funcionan, y persistentes conducen a la locura.

Filtros de los motores de b煤squeda

Para nuestra b煤squeda lateral, utilizaremos operadores de b煤squeda avanzada, principalmente los filtros de Google

inurl:

y

site:

. Algunas otras tambi茅n pueden ser 煤tiles, aqu铆 hay una buena referencia: la hoja de trucos del filtro de b煤squeda, Bing ofrece otras similares pero no un filtro de URL. Si prefiere Bing, su filtro

intitle:

deber铆a ser un buen sustituto de inurl .

Usaremos estos filtros avanzados para buscar archivos no codificados, los cuales est谩n debidamente indexados por el motor de b煤squeda, incluso cuando el c贸digo junto a ellos no lo est谩.

Con inurl , podemos filtrar a archivos de texto espec铆ficos como Dockerfiles o READMEs o, poderosamente, archivos de manifiesto de dependencia como Nodes package.json , Pythons requirements.txt , Rubys Gemfile , etc.Algunos sitios ofrecen expl铆citamente la b煤squeda de gr谩ficos de dependencia como una caracter铆stica (incluyendo los administradores de paquetes y GitHub), pero encuentro que el vud煤 de rango de p谩gina de Google supera a estos.

Ejemplo de una b煤squeda exitosa

Digamos que mi tarea actual es desbastar un marco de pruebas para un proyecto de Electr贸n:

inurl:package.json "electron" "mocha"

. (Si no est谩 familiarizado con Node, mocha es un marco de pruebas muy popular.) El filtro inurl restringe los resultados a las p谩ginas con package.json en la URL. Comenzar茅 a abrir pesta帽as que parecen prometedoras, intercambiando t茅rminos de b煤squeda de vez en cuando, tal vez reemplazando “mocha” por “jest” (otro marco de prueba) y luego intentando de nuevo con un filtro site para limitar los resultados a GitHub (con GitHub) (con

>site:github.com

), luego GitLab. 驴Quieres tu ejemplo en TypeScript? A帽ade un t茅rmino de b煤squeda

"@types"

o

"tsc"

En un par de minutos, encontraremos Facebook Flipper y Rocket.chat, repositorios que son populares, actualizados y bien mantenidos. Tambi茅n son enormes y abrumadores. Estoy seguro de que hay grandes lecciones que aprender, pero tenemos prisa. Nuestra b煤squeda tambi茅n muestra algunos repositorios peque帽os y sanos, que son m谩s f谩ciles de hojear como: sindresorhus/electron-serve, y checksum-validator.

No dir茅 que encontramos oro, pero la evaluaci贸n de estos ejemplos de trabajo ofrece un gran aumento de la productividad y los encontramos en s贸lo unos minutos.

Uno de los proyectos m谩s peque帽os nos muestra c贸mo usar spectron para pruebas sin cabeza, el otro nos ayuda a considerar el uso de pruebas de humo. (Personalmente, el ejercicio me ayud贸 a decidir tambi茅n a mover todas las llamadas directas a Electron fuera de la interfaz de usuario a trav茅s de @wranggle/rpc, haciendo que el ejercicio valga la pena.)

Colecciones locales

Digamos que somos nuevos en Django y queremos ver algunos ejemplos del mundo real de c贸mo hacer GROUP BY consultas a la base de datos. Podr铆amos probar la pesta帽a de b煤squeda de GitHub Code en algunos, ( Login requerido; enviar b煤squeda y luego hacer clic en la pesta帽a “Code” ), pero he tenido la mayor铆a de las veces mala suerte con ella. Podr铆amos intentar una b煤squeda en Google en

"desde django.db.models import Q" filetype:py

y eso nos dar铆a algunos ejemplos, pero hay una forma mejor de hacerlo: en lugar de buscar directamente por los usos de nuestra consulta de agregaci贸n, vamos a crear una colecci贸n de proyectos de ejemplo bien escritos y guardados localmente y buscarlos. Env铆e una b煤squeda y haga clic en la pesta帽a “Tema”. Estos son auto-etiquetados por el propietario del repositorio, pero sigue siendo una buena manera de encontrar repositorios de ejemplo.

Es probable que haya una buena aplicaci贸n de CRM, CMS, blog y comercio electr贸nico en casi todos los idiomas. (Adem谩s, tal vez hasta una lista de tareas)

Las pesta帽as Temas y Repositorio de GitHub nos ayudan a encontrar proyectos pulidos, populares y bien mantenidos que podemos a帽adir a nuestra colecci贸n local.

Sugiero que guardes una copia local de todo lo que se ve bien. De este modo, podr谩 buscarlos utilizando su propio IDE de forma mucho m谩s eficaz que cualquier otra herramienta en l铆nea que haya probado.

Tendr谩s mejores resultados que con la b煤squeda en el repositorio de GitHub y podr谩s volver a ver estos mismos ejemplos en el futuro, lo que es seguro, este enfoque revela muchos ejemplos de uso para esa consulta de agregaci贸n, y mejor a煤n, podemos evaluar c贸mo los est谩n probando.

Contenido Humano e Impresionante Humano

Cuando se investiga alg煤n problema de codificaci贸n, las b煤squedas regulares muestran art铆culos/tutoriales, respuestas sobre StackOverflow/Gitter, discusiones sobre HackerNews/Reddit, etc. Desde la perspectiva de encontrar un manual previo a la tarea, usted sabe mejor si uno de estos ser铆a m谩s 煤til que el c贸digo de ejemplo.

Sin embargo, los recursos de alta calidad de cualquier tipo se pueden encontrar a menudo en una lista curada, y los m谩s f谩ciles de encontrar son las listas impresionantes .

Cuando olvido una vez m谩s la sintaxis CSS para los elementos de flexbox, una b煤squeda simple siempre me lleva a css-tricks, y es bastante agradable. Pero si me tomo un poco m谩s de tiempo para encontrar una lista impresionante de awesome.re o buscando en

awesome flexbox

, encontrar茅 un gran recurso.

Sitios de b煤squeda de c贸digo

Si desea buscar un c贸digo espec铆fico de publicidad, puede que valga la pena probar searchcode.com. De las herramientas de b煤squeda directa de c贸digo, parece ser la mejor cuando no se tiene una lista de repositorios conocidos. Para esa consulta de agregaci贸n, una b煤squeda en

"desde django.db.models import Q"

parece arrojar resultados decentes La misma b煤squeda usando la funci贸n de b煤squeda por c贸digo de GitHub produce resultados mucho peores. Esperamos que GitHub/Microsoft siga invirtiendo en la b煤squeda de c贸digo. (Me encantar铆a que a帽adieran una funci贸n de “coincidencia exacta”, y una funci贸n que haga una b煤squeda profunda de c贸digo en cada repositorio que sigo o he marcado.) SourceGraph, una herramienta de b煤squeda de c贸digo comercial, podr铆a valer la pena buscar equipos que quieran compartir y buscar en su propia lista de repositorios curados. Sin embargo, necesita saber qu茅 repositorios quiere indexar con antelaci贸n. (Nunca lo he probado pero esa caracter铆stica suena 煤til.)

C贸mo darse cuenta cuando es una p茅rdida de tiempo

Echemos un vistazo a un proceso de b煤squeda m谩s duro. Digamos que nuestra pr贸xima tarea es agregar la divisi贸n de c贸digo Webpack a un proyecto diferente. Todav铆a no hemos empezado y no estamos (驴a煤n?) atascados, s贸lo estamos siguiendo la buena pr谩ctica general de hacer nuestra investigaci贸n inicial.Una b煤squeda en

"splitChunks" inurl:webpack.config.js

falla, devolviendo muy pocos resultados. Cambiando inurl a

intitle:webpack.config

devuelve un poco m谩s pero mucho m谩s es ruido. No podemos hacer una b煤squeda de dependencias como hicimos para nuestra tarea de Electron porque splitChunks es parte del n煤cleo de WebPack, no agrega una dependencia. Ir m谩s lejos con una b煤squeda de dependencia en otra cosa en el vecindario general ( mini-css-extract-plugin ) produce resultados decentes, pero llegar a esa palabra clave requer铆a una investigaci贸n innecesaria, la b煤squeda de un Gist (

"splitChunks" site:gist.github.com

) tambi茅n nos lleva a buenos ejemplos de usos, pero no a un repositorio de ejemplos completo. (No s茅 por qu茅 Gist est谩 indexado pero el repositorio maestro no lo est谩. Robots.txt permite ambos.) En general, en este caso, el uso de recursos humanos habr铆a sido un mejor uso del tiempo. O deber铆a haber detenido la b煤squeda antes de tiempo, para posiblemente retomarla despu茅s de intentar la tarea yo mismo.

驴Cu谩ndo parar?

La b煤squeda de c贸digo de ejemplo puede ser un ejercicio abierto. Es realmente f谩cil pasar horas improductivas buscando y leyendo muestras.

Ten en cuenta que encontrar o entender una muestra determinada no es el objetivo, tienes que terminar tu propio proyecto de codificaci贸n.

Ese empuje obstinado para terminar lo que has comenzado es generalmente una fuerza positiva, pero si encontrar una muestra no es vital y no est谩s encontrando nada 煤til, es mejor que sigas adelante.de lo contrario, tal vez establecer un rango de tiempo para el ejercicio. Si no est谩s familiarizado con el tema actual, dale un l铆mite superior relativamente m谩s alto. Si llegas al l铆mite pero el ejercicio sigue siendo productivo, aj煤stalo hacia arriba. En contraste, mu茅vase temprano si las muestras no son 煤tiles o si se siente listo para comenzar su propia tarea. La mejor se帽al de que el ejercicio ha sido un 茅xito es si est谩 obteniendo ideas sobre c贸mo hacer las cosas mejor que la muestra. Leer c贸digo es mucho menos divertido que escribirlo, pero hay mucho que aprender en los repositorios de otras personas, incluso si ya sabes c贸mo realizar tu tarea. Si tienes otras ideas o t茅cnicas para encontrar c贸digo de ejemplo, por favor, p谩salas. Cr茅ditos de las fotos en orden de aparici贸n:

  1. Elijah ODonnell
  2. Pexels
  3. Milada Vigerova
  4. Ian Stauffer
  5. Pexels
  6. TeroVesalainen
  7. Daniel Sampaio
  8. 3D_Maennchen
  9. Prawny

Etiquetas

Code SearchProductivity HacksEjemplos de CodeProductivityCodingEngineering ManagementReading Source CodeLeading Tech StoriesContinuar la discusi贸n