anncode

[Android Native, Kotlin, Geek & Teacher]

Tipos de Datos Booleanos y Caracteres 0 (0)

Tipos de Datos Booleanos

Solo pueden tener un valor, ya sea verdadero o falso, por eso su tamaño en memoria es de 1 byte

Nombres para variables booleanos

Escribimos variables booleanas en forma de pregunta

val isLoggedIn = true

val hasAddress = false

Con estos datos booleanos podemos generar las siguietes operaciones:

  • and -> representado por &&
  • or -> representado por ||
  • not -> representado !

Mira los tipos de datos Numéricos en este Post

Operación And

ValorOperaciónValorResultado
trueand / &&truetrue
trueand / &&falsefalse
falseand / &&truefalse
falseand / &&falsefalse
En la operación And ambos valores deben ser true para que el resultado sea true

Operación Or

ValorOperaciónValorResultado
trueor / ||truetrue
trueor / ||falsetrue
falseor / ||truetrue
falseor / ||falsefalse
En la operación Or somos más flexibles y mientras cualquiera de los valores sea true nos dará como resultado true

Operación Not

ValorOperaciónResultado
truenot / !false
falsenot / !true
Esta operación niega el valor original

Operaciones Booleanas con Kotlin ejemplos

val isLoggedIn = true
val hasAddress = false

// Operación And
println(isLoggedIn && hasAddress) // Devuelve false
println(isLoggedIn.and(hasAddress)) // Al ser un objeto podemos usar su función and

// Utilizando Infix Functions de Kotlin podemos expresarlo así:
println(isLoggedIn and hasAddress) 

// Operación Not
println(!isLoggedIn) // Devuelve false
println(isLoggedIn.not()) // Al ser un objeto podemos usar su función not

Utilizando Infix Functions de Kotlin el código resulta mucho más simple y sencillo de leer. Kotlin ama el Clean Code 💜

Tipos de Datos Caracteres Char

Son diferentes a los tipo String

Su tamaño es de 2 bytes y las declaras usando comillas simples ' .

val keyPressed = 'a'

Secuencias de Escape más comunes Soportadas en Kotlin

Caracteres de EscapeResultado
\tGenera un espacio de tabulador
\nGenera un salto de línea
\'Nos permite poner una comilla simple ' dentro de un tipo de dato Char
\"Nos permite poner comillas dobles " dentro de un tipo de dato String
\\Nos permite poner una antidiagonal \ dentro de un tipo de dato String
\$Nos permite poner el símbolo de $

Ejemplos

val keyPressed = 'a' // imprime a
val dollarSymbol = '\$'  // imprime $
val singlQuote = '\''  // imprime '

Todo esto que aprendiste es parte del Curso Esencial de Kotlin míralo completo a un precio especial solo aquí en mi sitio web.

😊 Gracias por comparitr haces un excelente trabajo divulgando conocimiento.

Principios SOLID 0 (0)

Los principios SOLID son un acrónimo recopilado por Robert C. Martín en su libro Clean Architecture.

Nacen de la Programación Orientada a Objetos y sirven para Diseñar Programas.

  • Tolerantes al cambio
  • Fácil de entender
  • Reutilizables

Para mí son recomendaciones y guías nos muestran cómo crear, Clases, Métodos, Interfaces, etc. correctamente y conforme a la POO.

En mi Curso de Diseño Orientado a Objetos y Principios SOLID te enseño todo desde cero y paso a paso con ejemplos reales, te dejé un regalo en este link para que lo adquieras a un precio especial.

Objetivo de los Principios SOLID

Su principal Objetivo basado en la POO es:

Crear software de la forma más modular posible.

Al tener software y sus componentes con esta calidad nos permitirá ensamblarlo e intercambiarlo como si fueran Bloques de Lego.

Principios SOLID uno a uno de manera general

(S) Single Responsibility Principle

Significa: Responsabilidad Única pero, se entenderá mucho más si lo definimos como: «Que un elemento de un programa tenga solo una sola razón para cambiar»

Cada componente debe ser sumamente independiente pero al mismo tiempo tener las capacidades de conectarse con otros para trabajar y resolver tareas más complejas.

(O) Open / Closed Principle

«Abierto por extensión pero cerrado para modificación»

Aquí nos enfocamos en pensar cómo hacer crecer el software o en otras palabras, hacerlo Escalable.

El software debería poder crecer sin dolor, si añadir algo nuevo provoca una multitud de cambios puede ser que tengamos que abrir un montón de clases y modificarlas.

Precisamente para evitar este dolor el principio dice que los elementos deben ser Cerrados para Modificación.

Pero entonces, ¿cómo añado algo nuevo?

Si añadirlo significa ensamblarlo o conectarlo como un bloque de Lego, ¡Bingo! tu diseño es escalable.

(L) Liskov Sustitution Principle

Barbara Lizkov fue la creadora de este principio.

La definición compleja dice:

Por cada objeto O1 del tipo S existe un objeto O2 del tipo T, cuando O1 es sustituído por O2 entonces S es un subtipo de T.

Pero en otras palabras podemos decir que:

En una jerarquía de clases padre e hijos. Los hijos deben cumplir por completo con la naturaleza de su padre sin hacerse pasar por otras clases

(I) Interface Segregation Principle

Significa: Segregación de Interfaces.

Segregar Interfaces viene de la acción de dividir, y para dividir correctamente una Interfaz hay que seguir pensando en las responsabilidades que debe tener.

Cuando implementas una interfaz en una clase, esta debe estar diseñada para que a todos sus métodos les escribas un comportamiento.

Si por alguna razón al implementar una interfaz estás dejando métodos vacíos esta es una señal de que tal vez tiene muchas responsabilidades, por lo que necesitarás segregarla o dividirla.

(D) Dependency Injection Principle

El principio dice:

Los módulos de alto nivel no deberían depender de los de bajo nivel.
Ambos deberían depender de abstracciones

Lo primero que hay que diferenciar es que la Inversión de Dependencias es diferente a la Inyección de Dependencias.

El Objetivo de la Inyección de Dependencias es suministrar objetos a un elemento en lugar de ser él mismo quien los cree.

Por otro lado el diferenciador del Principio de Inversión de Dependencias es su última parte: Ambos deberían depender de abstracciones.

A cualquier nivel que lleves este principio, desde un método, una clase, un módulo etc. La Inversión de dependencias se verá al depender de Abstracciones en lugar de cosas concretas.

Los elementos más abstractos que tenemos en Kotlin son: Clases Abstractas y las Interfaces.

apple fruit with plastic syringes

El objetivo de este Post es darte un panorama general sobre los Principios SOLID, visita todos y cada uno por separado en nuestro sitio web para que tengas más comprensión con ejemplos de código.

En mi Curso de Diseño Orientado a Objetos y Principios SOLID te enseño todo desde cero y paso a paso con ejemplos reales, te dejé un regalo en este link para que lo adquieras a un precio especial.

😊 Gracias por comparitr haces un excelente trabajo divulgando conocimiento.

Tipos de Datos Numéricos en Kotlin 0 (0)

Kotlin maneja tipos de datos numéricos principalmente:

  • Números Enteros
  • Números Decimales

Números Enteros

  • Byte
  • Short
  • Int
  • Long

Tipo de DatoTamañoRango
Byte1 Byte-128 a 127
Short2 Bytes-32,768 a 32,767
Int4 Bytes-2,147,483,648 a 2,147,483,647
Long8 Bytes-2^63 a (2^63) – 1

Elige el más adecuado de acuerdo al rango de númeración que necesitas manejar.

Ejemplos:

// Byte -127 - 128
val age = 20 //Sí compila
val newAge: Byte = 128 //No compila
// Int
// 2 mil millones
val productId = 2147483747
val productId2 = 2_147_483_747

val productId3: Int = 2_147_483_748 //No compila
// Long
// 9 trillones
val userId: Long = 9_223_372_036_854_775_807
val userId2: Long = 9_223_372_036_854_775_808 //No compila
val userId3 = 9_223_372_036_854_775_807L //Si colocas L infiere el tipo de dato

Quieres saber más sobre cómo Kotlin Infiere datos mira este Post.

Números Decimales

  • Float
  • Double

Tipo de DatoTamañoRango
Float4 Bytes6 a 7 decimales
Double8 Bytes15 a 18 decimales

Por defecto el compilador infiere que estás declarando un tipo Double a menos que le indiques un Float con una F.

val myFloat = 2.12345678911234567F
println(myFloat) //imprime solo hasta 2.1234567 trunca lo que no es capaz de soportar
val myDouble = 2.123456789112345678 
println(myDouble) //imprime solo hasta 2.12345678911234567 trunca lo que no es capaz de soportar

¿Cuándo elegir Float y cuándo Double?

Esto gira entorno a la precisión entre más digitos soporte nuestro tipo de dato mayor precisión tendremos en el resultado, entonces medita en el tipo de operación que necesites hacer y el resultado.

BigInteger y BigDecimal

Estos son tipos de datos que provienen directamente de Java y están diseñados para trabajar con cálculos muy precisos por ejemplo:

  • Ciencia
  • Negocios – Dinero

Todo esto que aprendiste es parte del Curso Esencial de Kotlin míralo completo a un precio especial solo aquí en mi sitio web.

😊 Gracias por comparitr haces un excelente trabajo divulgando conocimiento.

¿Qué es la Programación Orientada a Objetos? 0 (0)

La Programación Orientada a Objetos es una forma de pensar y ver las cosas en términos de objetos y responsabilidades.

Para lograr esto nos basamos en técnicas que componen esta metodología.

La Programación Orientada a Objetos es uno de los componentes principales para Diseñar Software.

Paradigma Orientado a Objetos

Seguramente haz visto este término cuando se intenta describir la Orientación a Objetos y es que se dice que es un Paradigma.

Un Paradigma es una forma de ejemplificar un problema.

Por lo tanto el Paradigma Orientado a Objetos hará que usemos estás técnicas de orientación a objetos para analizar y ejemplificar un problema con su solución.

person writing on white paper

¿Cómo resolvemos un problema Orientándolo a Objetos?

Nuestro objetivo como programadores es: Resolver un problema de la manera más creativa con código.

Dado que nuestra labor se centra en trasladar una solución a código, lo mejor para comenzar es Diseñar.

Mi primer consejo para iniciar este camino es Antes de programar Diseña.

Te recomiendo estos pasos antes de programar una solución:

  • 1. Analiza el problema y detecta tus objetos

  • 2. Diagrama y plasma gráficamente los objetos que identificaste
  • 3. Genera abstracciones
  • 4. Programarlo

Tal vez alguno de estos pasos no tengas claro cómo seguirlo, para eso te recomiendo mi Curso de Diseño Orientado a Objetos y Principios SOLID que encuentras a un precio especial en este enlace en el curso vemos todo desde cero y paso a paso, con las mejores prácticas.

Elementos de la Programación Orientada a Objetos

Lo siguiente son las herramientas que tiene la POO para que puedas crear una solución a un problema con código:

  • Clases
  • Atributos
  • Métodos / Funciones
  • Objetos

Estos son los elementos que nos servirán para expresar nuestra solución a otros programadores.

Pilares de la Programación Orientada a Objetos

  • Herencia
  • Abstracción
  • Polimorfismo
  • Encapsulamiento

Estas son las metodologías que nos guiarán a crear nuestra solución con los elementos anteriores

Recuerda que todo lo anterior son herramientas y guías en las que solo nos basamos para crear soluciones de la forma más creativa.

Nunca habrá una única solución para un problema, debes tomar en cuenta las circunstancias a tu alrededor.

No tomes de manera radical estas metodologías lo más importante es que seas lo suficientemente flexible para adaptarte y ser lo más creativo posible en tu solución.

En mi Curso de Diseño Orientado a Objetos y Principios SOLID te enseño todo desde cero y paso a paso accede a todo el contenido a un precio especial solo aquí en mi sitio web.

😊 Gracias por comparitr haces un excelente trabajo divulgando conocimiento.

Tips para poner nombres a variables 0 (0)

Estoy segura que una de las cosas más difíciles que haz experimentado al programar es definir un nombre.

Si quieres aprender en profundidad cómo funciona una variable en Kotlin mira este post.

woman using MacBook

El Clean Code es una gran herramienta para ayudarnos con esto.

¿Sabías que tan solo asignando un buen nombre incrementa significativamente la Calidad de tu código?

A continuación te daré una serie de consejos, que harán esta tarea mucho más fácil.

1. Usa nombres significativos

Utiliza palabras contenidas en los requerimientos, nombres que para tí y tú equipo signifiquen la misma cosa.

Esto te ayudará a leer, entender y programar mucho más rápido, pues al encontrarte con un código base que tenga un lenguaje «sencillo» y «familiar» partir de él para crear nuevo código o simplemente resolver un bug, será mucho más simple.

woman sitting in front of the laptop

2. No uses abreviaturas

Las abreviaturas entorpecen la lectura del código, además que hace mucho más difícil recordar el nombre de una variable que no tiene significado o no puedes pronunciar por ejemplo.

La siguiente variable es el caso de un nombre sin significado, esta variable a simple vista no nos dice nada, tendríamos que leer más para entener qué cuál es su función.

val d = 0

red alphabet decors

Si cambiamos su nombre por lo siguiente te darás cuenta que adquiere mucho más valor y es más sencillo entender su funcionalidad dentro del programa.

val diameter = 0

3. Evita enumerar variables

El siguiente par de variables es el ejemplo del uso de numeración, es dificil distinguir cuál es el objetivo del la primera date con respecto a la segunda.

val date1 
val date2

B21 signage

Hagamos una modificación para hacer más limpia la declaración de estás variables. Teniendolas así es mucho más claro para qué se usa cada una.

val registrationDate
val lastChangeDate

4. No uses Siglas

Usar siglas hará que tu código sea dificil de recordar y de pronunciar, intenta leer la siguiente declaración en voz alta:

val drtAddress

ouf light signage

Ahora intenta con esta otra, verás que es mucho más fácil de recodar, lo que a medida que avances te permitirá entender mejor el código como un todo.

val address

5. Usa SEO (Search Engine Optimization) para nombrar variables

La técnica de Search Engine Optimization se usa en los sitios web con el objetivo de ser encontrados en buscadores como Google.

Para esto se tratan de definir las palabras clave más comunes y usadas por el público al que va dirigido el sitio.

Estas palabras clave suelen ser las más obvias.

Cuando definas un nombre, piensa en cuál será la mejor forma de ser encontrada en el código, la forma más obvia de ser buscada, (SEO).

Recuerda que cuando programamos nos hacemos autores del código que escribimos. Esto significa que otras personas vendrán a leernos.

woman siting facing laptop computer

Por esa razón, definir un nombre con empatía, pensando en mi equipo y en mi futuro yo, será la forma más efectiva de definir un nombre.

Todo esto que aprendiste es parte del Curso Esencial de Kotlin míralo completo a un precio especial solo aquí en mi sitio web.

😊 Gracias por comparitr haces un excelente trabajo divulgando conocimiento.