¿Cuáles son los algoritmos más utilizados para los desarrolladores de Ruby on Rails?

Esto probablemente podría generalizarse diciendo: “¿cuáles son los algoritmos más utilizados para los desarrolladores web”? Hay dos clases de algoritmos que, como desarrollador web, seguramente usará repetidamente: buscar y ordenar.

En Ruby on Rails, utilizará la función de clasificación de listas y la pasará como un comparador con mayor frecuencia, como:

foo = [3,1,4,5,6,3,7,9,8]
foo.sort {| a, b | b a}
pone foo
# salidas: [9, 8, 7, 6, 5, 4, 3, 2, 1]

Es posible que necesite un SortedSet, o puede usar ActiveRecord para ordenar objetos de datos recuperados de su fuente de datos, como:

User.order (‘nombre DESC, correo electrónico’)

Aquí los objetos de usuario se devuelven por nombre descendente, y donde el nombre coincide luego por correo electrónico.

Este también es un ejemplo de búsqueda, aunque hay más aplicaciones directas en Rails.

Por lo general, utilizará un acceso directo o una búsqueda pura o alguna combinación de los mismos. El acceso directo sería como conocer el índice que necesita dentro de una matriz, o utilizando un hash o conjunto. La búsqueda pura sería algo así como una búsqueda binaria, que es genial cuando tienes una matriz ordenada y necesitas encontrar algo en ella. Quizás haya recibido información ordenada de una fuente externa y solo necesita una entrada. En este caso, iterar a través de la lista para almacenarlo en un hash o encontrar el elemento en cuestión sería más costoso que utilizar la función de búsqueda de matriz (introducida en Ruby 2.0), como:

def has_error? (error = 404)
foo = some_helper_instance.get_all_error_codes ()
foo.bsearch {| err | err == error} .presente?
fin

Tenga en cuenta que el uso de “.present?” requiere active_support.

Lo maravilloso aquí es que lo que necesita en términos de algoritmos probablemente se implemente implícitamente para usted, ya sea implícitamente (por ejemplo, realizando una búsqueda en una columna indexada en una base de datos, búsqueda binaria) o disponible de manera explícita (por ejemplo, mi ejemplo de búsqueda binaria anterior .

La pregunta en sí me permite creer que en realidad estás tratando de encontrar una respuesta a una pregunta diferente.

Pero, para responder a esta pregunta, los algoritmos más utilizados para los desarrolladores de Ruby on Rails se encontrarán dentro de las gemas más utilizadas, o en el propio servidor. Dado que los algoritmos son soluciones a distintos problemas, es poco probable que los desarrolladores individuales usen exactamente el mismo algoritmo para crear una solución. Si se trata simplemente de código reutilizable, estamos hablando de métodos.

Hay patrones de diseño que ayudan a estructurar el código para resolver su problema particular, y hay modismos específicos de ruby ​​/ RoR, pero es poco probable que la implementación de un patrón de diseño o modismo sea idéntica si los diferentes desarrolladores escribieran el código. Estas son más como directrices para formas eficientes de resolver problemas comunes que todos los desarrolladores enfrentan / resuelven.

Vale la pena señalar que la respuesta anterior enumera “métodos” a nivel de clase que técnicamente son algoritmos, pero en realidad son más como funciones. Vea la respuesta de Kyle aquí para el Método v Algoritmo: ¿Cuál es la diferencia entre un método y un algoritmo?

El algoritmo más utilizado a este respecto sería la serie de pasos utilizados por el servidor para manejar, administrar, enrutar y responder a una solicitud entrante. Esto incluiría identificar el punto final correcto para la solicitud y permitir que un conjunto arbitrario de código (su código de Controladores) ejecute y prepare una respuesta, enrute la respuesta a la máquina solicitante y cierre la comunicación con el cliente al final de cualquier respuesta.